1. Problem
In the context of Las Vegas’s dynamic hospitality industry, there is a pressing need to better understand the determinants of hotel star ratings, which are crucial for a hotel’s reputation and guest attraction. Despite the heavy reliance on online reviews and ratings by potential travelers, there remains a gap in comprehensive knowledge about what factors contribute to these ratings. To address this, an in-depth analysis of Las Vegas hotel data is required. The goal of this analysis is to identify and understand the key elements that influence a hotel’s star rating. This understanding can not only provide insights for hotel management to improve their services but also assist potential guests in making informed decisions based on these ratings.
2. Data Mining Task
In our project focusing on Las Vegas hotel reviews, we will implement two primary data mining techniques: classification and clustering, with a specific emphasis on predicting hotel star ratings. The classification aspect of our project involves training a model to predict the star ratings of hotels (‘hotel stars’ being our class label). This prediction will be based on key attributes that, through our research, have shown a significant impact on these ratings. These attributes include the presence of amenities such as a Pool, Gym, Spa, Free Internet, Tennis Court, and Casino.
In the clustering phase, our model will group hotels with similar characteristics, based on these identified attributes. By analyzing clusters of hotels that share these amenities, we aim to understand better and predict patterns in star ratings. This approach will allow us to provide more accurate predictions for the star ratings of new or unreviewed hotels in Las Vegas, based on their amenity offerings. Our findings indicate that these particular amenities are critical in influencing a hotel’s star rating, while other factors do not significantly affect the outcome.
3. Data
Number of objects: 504
Number of attributes: 20
characteristics of attributes
| attribute | Data type |
|---|---|
| User Country | Nominal |
| Nr..reviews | Numeric |
| Nr..hotel.reviews | Numeric |
| Helpful.votes | Numeric |
| Score | Ordinal |
| Period.of.stay | Nominal |
| Traveler.type | Nominal |
| Pool | Binary |
| Gym | Binary |
| Tennis.court | Binary |
| Spa | Binary |
| Casino | Binary |
| Free.internet | Binary |
| Hotel.name | Nominal |
| Hotel.stars | Ordinal |
| Nr..rooms | Numeric |
| User.continent | Nominal |
| Member.years | Numeric |
| Review.month | Nominal |
| Review.weekday | Nominal |
read the dataset
dataset = read.csv("dataset.csv")
View(dataset)
str(dataset)
## 'data.frame': 504 obs. of 20 variables:
## $ User.country : chr "USA" "USA" "USA" "UK" ...
## $ Nr..reviews : int 11 119 36 14 5 31 45 2 24 12 ...
## $ Nr..hotel.reviews: int 4 21 9 7 5 8 12 1 3 7 ...
## $ Helpful.votes : int 13 75 25 14 2 27 46 4 8 11 ...
## $ Score : int 5 3 5 4 4 3 4 4 4 3 ...
## $ Period.of.stay : chr "Dec-Feb" "Dec-Feb" "Mar-May" "Mar-May" ...
## $ Traveler.type : chr "Friends" "Business" "Families" "Friends" ...
## $ Pool : chr "NO" "NO" "NO" "NO" ...
## $ Gym : chr "YES" "YES" "YES" "YES" ...
## $ Tennis.court : chr "NO" "NO" "NO" "NO" ...
## $ Spa : chr "NO" "NO" "NO" "NO" ...
## $ Casino : chr "YES" "YES" "YES" "YES" ...
## $ Free.internet : chr "YES" "YES" "YES" "YES" ...
## $ Hotel.name : chr "Circus Circus Hotel & Casino Las Vegas" "Circus Circus Hotel & Casino Las Vegas" "Circus Circus Hotel & Casino Las Vegas" "Circus Circus Hotel & Casino Las Vegas" ...
## $ Hotel.stars : num 3 3 3 3 3 3 3 3 3 3 ...
## $ Nr..rooms : int 3773 3773 3773 3773 3773 3773 3773 3773 3773 3773 ...
## $ User.continent : chr "North America" "North America" "North America" "Europe" ...
## $ Member.years : int 9 3 2 6 7 2 4 0 3 5 ...
## $ Review.month : chr "January" "January" "February" "February" ...
## $ Review.weekday. : chr "Thursday," "Friday," "Saturday," "Friday," ...
is.na(dataset)
## User.country Nr..reviews Nr..hotel.reviews Helpful.votes Score
## 1 FALSE FALSE FALSE FALSE FALSE
## 2 FALSE FALSE FALSE FALSE FALSE
## 3 FALSE FALSE FALSE FALSE FALSE
## 4 FALSE FALSE FALSE FALSE FALSE
## 5 FALSE FALSE FALSE FALSE FALSE
## 6 FALSE FALSE FALSE FALSE FALSE
## 7 FALSE FALSE FALSE FALSE FALSE
## 8 FALSE FALSE FALSE FALSE FALSE
## 9 FALSE FALSE FALSE FALSE FALSE
## 10 FALSE FALSE FALSE FALSE FALSE
## 11 FALSE FALSE FALSE FALSE FALSE
## 12 FALSE FALSE FALSE FALSE FALSE
## 13 FALSE FALSE FALSE FALSE FALSE
## 14 FALSE FALSE FALSE FALSE FALSE
## 15 FALSE FALSE FALSE FALSE FALSE
## 16 FALSE FALSE FALSE FALSE FALSE
## 17 FALSE FALSE FALSE FALSE FALSE
## 18 FALSE FALSE FALSE FALSE FALSE
## 19 FALSE FALSE FALSE FALSE FALSE
## 20 FALSE FALSE FALSE FALSE FALSE
## 21 FALSE FALSE FALSE FALSE FALSE
## 22 FALSE FALSE FALSE FALSE FALSE
## 23 FALSE FALSE FALSE FALSE FALSE
## 24 FALSE FALSE FALSE FALSE FALSE
## 25 FALSE FALSE FALSE FALSE FALSE
## 26 FALSE FALSE FALSE FALSE FALSE
## 27 FALSE FALSE FALSE FALSE FALSE
## 28 FALSE FALSE FALSE FALSE FALSE
## 29 FALSE FALSE FALSE FALSE FALSE
## 30 FALSE FALSE FALSE FALSE FALSE
## 31 FALSE FALSE FALSE FALSE FALSE
## 32 FALSE FALSE FALSE FALSE FALSE
## 33 FALSE FALSE FALSE FALSE FALSE
## 34 FALSE FALSE FALSE FALSE FALSE
## 35 FALSE FALSE FALSE FALSE FALSE
## 36 FALSE FALSE FALSE FALSE FALSE
## 37 FALSE FALSE FALSE FALSE FALSE
## 38 FALSE FALSE FALSE FALSE FALSE
## 39 FALSE FALSE FALSE FALSE FALSE
## 40 FALSE FALSE FALSE FALSE FALSE
## 41 FALSE FALSE FALSE FALSE FALSE
## 42 FALSE FALSE FALSE FALSE FALSE
## 43 FALSE FALSE FALSE FALSE FALSE
## 44 FALSE FALSE FALSE FALSE FALSE
## 45 FALSE FALSE FALSE FALSE FALSE
## 46 FALSE FALSE FALSE FALSE FALSE
## 47 FALSE FALSE FALSE FALSE FALSE
## 48 FALSE FALSE FALSE FALSE FALSE
## 49 FALSE FALSE FALSE FALSE FALSE
## 50 FALSE FALSE FALSE FALSE FALSE
## 51 FALSE FALSE FALSE FALSE FALSE
## 52 FALSE FALSE FALSE FALSE FALSE
## 53 FALSE FALSE FALSE FALSE FALSE
## 54 FALSE FALSE FALSE FALSE FALSE
## 55 FALSE FALSE FALSE FALSE FALSE
## 56 FALSE FALSE FALSE FALSE FALSE
## 57 FALSE FALSE FALSE FALSE FALSE
## 58 FALSE FALSE FALSE FALSE FALSE
## 59 FALSE FALSE FALSE FALSE FALSE
## 60 FALSE FALSE FALSE FALSE FALSE
## 61 FALSE FALSE FALSE FALSE FALSE
## 62 FALSE FALSE FALSE FALSE FALSE
## 63 FALSE FALSE FALSE FALSE FALSE
## 64 FALSE FALSE FALSE FALSE FALSE
## 65 FALSE FALSE FALSE FALSE FALSE
## 66 FALSE FALSE FALSE FALSE FALSE
## 67 FALSE FALSE FALSE FALSE FALSE
## 68 FALSE FALSE FALSE FALSE FALSE
## 69 FALSE FALSE FALSE FALSE FALSE
## 70 FALSE FALSE FALSE FALSE FALSE
## 71 FALSE FALSE FALSE FALSE FALSE
## 72 FALSE FALSE FALSE FALSE FALSE
## 73 FALSE FALSE FALSE FALSE FALSE
## 74 FALSE FALSE FALSE FALSE FALSE
## 75 FALSE FALSE FALSE FALSE FALSE
## 76 FALSE FALSE FALSE FALSE FALSE
## 77 FALSE FALSE FALSE FALSE FALSE
## 78 FALSE FALSE FALSE FALSE FALSE
## 79 FALSE FALSE FALSE FALSE FALSE
## 80 FALSE FALSE FALSE FALSE FALSE
## 81 FALSE FALSE FALSE FALSE FALSE
## 82 FALSE FALSE FALSE FALSE FALSE
## 83 FALSE FALSE FALSE FALSE FALSE
## 84 FALSE FALSE FALSE FALSE FALSE
## 85 FALSE FALSE FALSE FALSE FALSE
## 86 FALSE FALSE FALSE FALSE FALSE
## 87 FALSE FALSE FALSE FALSE FALSE
## 88 FALSE FALSE FALSE FALSE FALSE
## 89 FALSE FALSE FALSE FALSE FALSE
## 90 FALSE FALSE FALSE FALSE FALSE
## 91 FALSE FALSE FALSE FALSE FALSE
## 92 FALSE FALSE FALSE FALSE FALSE
## 93 FALSE FALSE FALSE FALSE FALSE
## 94 FALSE FALSE FALSE FALSE FALSE
## 95 FALSE FALSE FALSE FALSE FALSE
## 96 FALSE FALSE FALSE FALSE FALSE
## 97 FALSE FALSE FALSE FALSE FALSE
## 98 FALSE FALSE FALSE FALSE FALSE
## 99 FALSE FALSE FALSE FALSE FALSE
## 100 FALSE FALSE FALSE FALSE FALSE
## 101 FALSE FALSE FALSE FALSE FALSE
## 102 FALSE FALSE FALSE FALSE FALSE
## 103 FALSE FALSE FALSE FALSE FALSE
## 104 FALSE FALSE FALSE FALSE FALSE
## 105 FALSE FALSE FALSE FALSE FALSE
## 106 FALSE FALSE FALSE FALSE FALSE
## 107 FALSE FALSE FALSE FALSE FALSE
## 108 FALSE FALSE FALSE FALSE FALSE
## 109 FALSE FALSE FALSE FALSE FALSE
## 110 FALSE FALSE FALSE FALSE FALSE
## 111 FALSE FALSE FALSE FALSE FALSE
## 112 FALSE FALSE FALSE FALSE FALSE
## 113 FALSE FALSE FALSE FALSE FALSE
## 114 FALSE FALSE FALSE FALSE FALSE
## 115 FALSE FALSE FALSE FALSE FALSE
## 116 FALSE FALSE FALSE FALSE FALSE
## 117 FALSE FALSE FALSE FALSE FALSE
## 118 FALSE FALSE FALSE FALSE FALSE
## 119 FALSE FALSE FALSE FALSE FALSE
## 120 FALSE FALSE FALSE FALSE FALSE
## 121 FALSE FALSE FALSE FALSE FALSE
## 122 FALSE FALSE FALSE FALSE FALSE
## 123 FALSE FALSE FALSE FALSE FALSE
## 124 FALSE FALSE FALSE FALSE FALSE
## 125 FALSE FALSE FALSE FALSE FALSE
## 126 FALSE FALSE FALSE FALSE FALSE
## 127 FALSE FALSE FALSE FALSE FALSE
## 128 FALSE FALSE FALSE FALSE FALSE
## 129 FALSE FALSE FALSE FALSE FALSE
## 130 FALSE FALSE FALSE FALSE FALSE
## 131 FALSE FALSE FALSE FALSE FALSE
## 132 FALSE FALSE FALSE FALSE FALSE
## 133 FALSE FALSE FALSE FALSE FALSE
## 134 FALSE FALSE FALSE FALSE FALSE
## 135 FALSE FALSE FALSE FALSE FALSE
## 136 FALSE FALSE FALSE FALSE FALSE
## 137 FALSE FALSE FALSE FALSE FALSE
## 138 FALSE FALSE FALSE FALSE FALSE
## 139 FALSE FALSE FALSE FALSE FALSE
## 140 FALSE FALSE FALSE FALSE FALSE
## 141 FALSE FALSE FALSE FALSE FALSE
## 142 FALSE FALSE FALSE FALSE FALSE
## 143 FALSE FALSE FALSE FALSE FALSE
## 144 FALSE FALSE FALSE FALSE FALSE
## 145 FALSE FALSE FALSE FALSE FALSE
## 146 FALSE FALSE FALSE FALSE FALSE
## 147 FALSE FALSE FALSE FALSE FALSE
## 148 FALSE FALSE FALSE FALSE FALSE
## 149 FALSE FALSE FALSE FALSE FALSE
## 150 FALSE FALSE FALSE FALSE FALSE
## 151 FALSE FALSE FALSE FALSE FALSE
## 152 FALSE FALSE FALSE FALSE FALSE
## 153 FALSE FALSE FALSE FALSE FALSE
## 154 FALSE FALSE FALSE FALSE FALSE
## 155 FALSE FALSE FALSE FALSE FALSE
## 156 FALSE FALSE FALSE FALSE FALSE
## 157 FALSE FALSE FALSE FALSE FALSE
## 158 FALSE FALSE FALSE FALSE FALSE
## 159 FALSE FALSE FALSE FALSE FALSE
## 160 FALSE FALSE FALSE FALSE FALSE
## 161 FALSE FALSE FALSE FALSE FALSE
## 162 FALSE FALSE FALSE FALSE FALSE
## 163 FALSE FALSE FALSE FALSE FALSE
## 164 FALSE FALSE FALSE FALSE FALSE
## 165 FALSE FALSE FALSE FALSE FALSE
## 166 FALSE FALSE FALSE FALSE FALSE
## 167 FALSE FALSE FALSE FALSE FALSE
## 168 FALSE FALSE FALSE FALSE FALSE
## 169 FALSE FALSE FALSE FALSE FALSE
## 170 FALSE FALSE FALSE FALSE FALSE
## 171 FALSE FALSE FALSE FALSE FALSE
## 172 FALSE FALSE FALSE FALSE FALSE
## 173 FALSE FALSE FALSE FALSE FALSE
## 174 FALSE FALSE FALSE FALSE FALSE
## 175 FALSE FALSE FALSE FALSE FALSE
## 176 FALSE FALSE FALSE FALSE FALSE
## 177 FALSE FALSE FALSE FALSE FALSE
## 178 FALSE FALSE FALSE FALSE FALSE
## 179 FALSE FALSE FALSE FALSE FALSE
## 180 FALSE FALSE FALSE FALSE FALSE
## 181 FALSE FALSE FALSE FALSE FALSE
## 182 FALSE FALSE FALSE FALSE FALSE
## 183 FALSE FALSE FALSE FALSE FALSE
## 184 FALSE FALSE FALSE FALSE FALSE
## 185 FALSE FALSE FALSE FALSE FALSE
## 186 FALSE FALSE FALSE FALSE FALSE
## 187 FALSE FALSE FALSE FALSE FALSE
## 188 FALSE FALSE FALSE FALSE FALSE
## 189 FALSE FALSE FALSE FALSE FALSE
## 190 FALSE FALSE FALSE FALSE FALSE
## 191 FALSE FALSE FALSE FALSE FALSE
## 192 FALSE FALSE FALSE FALSE FALSE
## 193 FALSE FALSE FALSE FALSE FALSE
## 194 FALSE FALSE FALSE FALSE FALSE
## 195 FALSE FALSE FALSE FALSE FALSE
## 196 FALSE FALSE FALSE FALSE FALSE
## 197 FALSE FALSE FALSE FALSE FALSE
## 198 FALSE FALSE FALSE FALSE FALSE
## 199 FALSE FALSE FALSE FALSE FALSE
## 200 FALSE FALSE FALSE FALSE FALSE
## 201 FALSE FALSE FALSE FALSE FALSE
## 202 FALSE FALSE FALSE FALSE FALSE
## 203 FALSE FALSE FALSE FALSE FALSE
## 204 FALSE FALSE FALSE FALSE FALSE
## 205 FALSE FALSE FALSE FALSE FALSE
## 206 FALSE FALSE FALSE FALSE FALSE
## 207 FALSE FALSE FALSE FALSE FALSE
## 208 FALSE FALSE FALSE FALSE FALSE
## 209 FALSE FALSE FALSE FALSE FALSE
## 210 FALSE FALSE FALSE FALSE FALSE
## 211 FALSE FALSE FALSE FALSE FALSE
## 212 FALSE FALSE FALSE FALSE FALSE
## 213 FALSE FALSE FALSE FALSE FALSE
## 214 FALSE FALSE FALSE FALSE FALSE
## 215 FALSE FALSE FALSE FALSE FALSE
## 216 FALSE FALSE FALSE FALSE FALSE
## 217 FALSE FALSE FALSE FALSE FALSE
## 218 FALSE FALSE FALSE FALSE FALSE
## 219 FALSE FALSE FALSE FALSE FALSE
## 220 FALSE FALSE FALSE FALSE FALSE
## 221 FALSE FALSE FALSE FALSE FALSE
## 222 FALSE FALSE FALSE FALSE FALSE
## 223 FALSE FALSE FALSE FALSE FALSE
## 224 FALSE FALSE FALSE FALSE FALSE
## 225 FALSE FALSE FALSE FALSE FALSE
## 226 FALSE FALSE FALSE FALSE FALSE
## 227 FALSE FALSE FALSE FALSE FALSE
## 228 FALSE FALSE FALSE FALSE FALSE
## 229 FALSE FALSE FALSE FALSE FALSE
## 230 FALSE FALSE FALSE FALSE FALSE
## 231 FALSE FALSE FALSE FALSE FALSE
## 232 FALSE FALSE FALSE FALSE FALSE
## 233 FALSE FALSE FALSE FALSE FALSE
## 234 FALSE FALSE FALSE FALSE FALSE
## 235 FALSE FALSE FALSE FALSE FALSE
## 236 FALSE FALSE FALSE FALSE FALSE
## 237 FALSE FALSE FALSE FALSE FALSE
## 238 FALSE FALSE FALSE FALSE FALSE
## 239 FALSE FALSE FALSE FALSE FALSE
## 240 FALSE FALSE FALSE FALSE FALSE
## 241 FALSE FALSE FALSE FALSE FALSE
## 242 FALSE FALSE FALSE FALSE FALSE
## 243 FALSE FALSE FALSE FALSE FALSE
## 244 FALSE FALSE FALSE FALSE FALSE
## 245 FALSE FALSE FALSE FALSE FALSE
## 246 FALSE FALSE FALSE FALSE FALSE
## 247 FALSE FALSE FALSE FALSE FALSE
## 248 FALSE FALSE FALSE FALSE FALSE
## 249 FALSE FALSE FALSE FALSE FALSE
## 250 FALSE FALSE FALSE FALSE FALSE
## 251 FALSE FALSE FALSE FALSE FALSE
## 252 FALSE FALSE FALSE FALSE FALSE
## 253 FALSE FALSE FALSE FALSE FALSE
## 254 FALSE FALSE FALSE FALSE FALSE
## 255 FALSE FALSE FALSE FALSE FALSE
## 256 FALSE FALSE FALSE FALSE FALSE
## 257 FALSE FALSE FALSE FALSE FALSE
## 258 FALSE FALSE FALSE FALSE FALSE
## 259 FALSE FALSE FALSE FALSE FALSE
## 260 FALSE FALSE FALSE FALSE FALSE
## 261 FALSE FALSE FALSE FALSE FALSE
## 262 FALSE FALSE FALSE FALSE FALSE
## 263 FALSE FALSE FALSE FALSE FALSE
## 264 FALSE FALSE FALSE FALSE FALSE
## 265 FALSE FALSE FALSE FALSE FALSE
## 266 FALSE FALSE FALSE FALSE FALSE
## 267 FALSE FALSE FALSE FALSE FALSE
## 268 FALSE FALSE FALSE FALSE FALSE
## 269 FALSE FALSE FALSE FALSE FALSE
## 270 FALSE FALSE FALSE FALSE FALSE
## 271 FALSE FALSE FALSE FALSE FALSE
## 272 FALSE FALSE FALSE FALSE FALSE
## 273 FALSE FALSE FALSE FALSE FALSE
## 274 FALSE FALSE FALSE FALSE FALSE
## 275 FALSE FALSE FALSE FALSE FALSE
## 276 FALSE FALSE FALSE FALSE FALSE
## 277 FALSE FALSE FALSE FALSE FALSE
## 278 FALSE FALSE FALSE FALSE FALSE
## 279 FALSE FALSE FALSE FALSE FALSE
## 280 FALSE FALSE FALSE FALSE FALSE
## 281 FALSE FALSE FALSE FALSE FALSE
## 282 FALSE FALSE FALSE FALSE FALSE
## 283 FALSE FALSE FALSE FALSE FALSE
## 284 FALSE FALSE FALSE FALSE FALSE
## 285 FALSE FALSE FALSE FALSE FALSE
## 286 FALSE FALSE FALSE FALSE FALSE
## 287 FALSE FALSE FALSE FALSE FALSE
## 288 FALSE FALSE FALSE FALSE FALSE
## 289 FALSE FALSE FALSE FALSE FALSE
## 290 FALSE FALSE FALSE FALSE FALSE
## 291 FALSE FALSE FALSE FALSE FALSE
## 292 FALSE FALSE FALSE FALSE FALSE
## 293 FALSE FALSE FALSE FALSE FALSE
## 294 FALSE FALSE FALSE FALSE FALSE
## 295 FALSE FALSE FALSE FALSE FALSE
## 296 FALSE FALSE FALSE FALSE FALSE
## 297 FALSE FALSE FALSE FALSE FALSE
## 298 FALSE FALSE FALSE FALSE FALSE
## 299 FALSE FALSE FALSE FALSE FALSE
## 300 FALSE FALSE FALSE FALSE FALSE
## 301 FALSE FALSE FALSE FALSE FALSE
## 302 FALSE FALSE FALSE FALSE FALSE
## 303 FALSE FALSE FALSE FALSE FALSE
## 304 FALSE FALSE FALSE FALSE FALSE
## 305 FALSE FALSE FALSE FALSE FALSE
## 306 FALSE FALSE FALSE FALSE FALSE
## 307 FALSE FALSE FALSE FALSE FALSE
## 308 FALSE FALSE FALSE FALSE FALSE
## 309 FALSE FALSE FALSE FALSE FALSE
## 310 FALSE FALSE FALSE FALSE FALSE
## 311 FALSE FALSE FALSE FALSE FALSE
## 312 FALSE FALSE FALSE FALSE FALSE
## 313 FALSE FALSE FALSE FALSE FALSE
## 314 FALSE FALSE FALSE FALSE FALSE
## 315 FALSE FALSE FALSE FALSE FALSE
## 316 FALSE FALSE FALSE FALSE FALSE
## 317 FALSE FALSE FALSE FALSE FALSE
## 318 FALSE FALSE FALSE FALSE FALSE
## 319 FALSE FALSE FALSE FALSE FALSE
## 320 FALSE FALSE FALSE FALSE FALSE
## 321 FALSE FALSE FALSE FALSE FALSE
## 322 FALSE FALSE FALSE FALSE FALSE
## 323 FALSE FALSE FALSE FALSE FALSE
## 324 FALSE FALSE FALSE FALSE FALSE
## 325 FALSE FALSE FALSE FALSE FALSE
## 326 FALSE FALSE FALSE FALSE FALSE
## 327 FALSE FALSE FALSE FALSE FALSE
## 328 FALSE FALSE FALSE FALSE FALSE
## 329 FALSE FALSE FALSE FALSE FALSE
## 330 FALSE FALSE FALSE FALSE FALSE
## 331 FALSE FALSE FALSE FALSE FALSE
## 332 FALSE FALSE FALSE FALSE FALSE
## 333 FALSE FALSE FALSE FALSE FALSE
## 334 FALSE FALSE FALSE FALSE FALSE
## 335 FALSE FALSE FALSE FALSE FALSE
## 336 FALSE FALSE FALSE FALSE FALSE
## 337 FALSE FALSE FALSE FALSE FALSE
## 338 FALSE FALSE FALSE FALSE FALSE
## 339 FALSE FALSE FALSE FALSE FALSE
## 340 FALSE FALSE FALSE FALSE FALSE
## 341 FALSE FALSE FALSE FALSE FALSE
## 342 FALSE FALSE FALSE FALSE FALSE
## 343 FALSE FALSE FALSE FALSE FALSE
## 344 FALSE FALSE FALSE FALSE FALSE
## 345 FALSE FALSE FALSE FALSE FALSE
## 346 FALSE FALSE FALSE FALSE FALSE
## 347 FALSE FALSE FALSE FALSE FALSE
## 348 FALSE FALSE FALSE FALSE FALSE
## 349 FALSE FALSE FALSE FALSE FALSE
## 350 FALSE FALSE FALSE FALSE FALSE
## 351 FALSE FALSE FALSE FALSE FALSE
## 352 FALSE FALSE FALSE FALSE FALSE
## 353 FALSE FALSE FALSE FALSE FALSE
## 354 FALSE FALSE FALSE FALSE FALSE
## 355 FALSE FALSE FALSE FALSE FALSE
## 356 FALSE FALSE FALSE FALSE FALSE
## 357 FALSE FALSE FALSE FALSE FALSE
## 358 FALSE FALSE FALSE FALSE FALSE
## 359 FALSE FALSE FALSE FALSE FALSE
## 360 FALSE FALSE FALSE FALSE FALSE
## 361 FALSE FALSE FALSE FALSE FALSE
## 362 FALSE FALSE FALSE FALSE FALSE
## 363 FALSE FALSE FALSE FALSE FALSE
## 364 FALSE FALSE FALSE FALSE FALSE
## 365 FALSE FALSE FALSE FALSE FALSE
## 366 FALSE FALSE FALSE FALSE FALSE
## 367 FALSE FALSE FALSE FALSE FALSE
## 368 FALSE FALSE FALSE FALSE FALSE
## 369 FALSE FALSE FALSE FALSE FALSE
## 370 FALSE FALSE FALSE FALSE FALSE
## 371 FALSE FALSE FALSE FALSE FALSE
## 372 FALSE FALSE FALSE FALSE FALSE
## 373 FALSE FALSE FALSE FALSE FALSE
## 374 FALSE FALSE FALSE FALSE FALSE
## 375 FALSE FALSE FALSE FALSE FALSE
## 376 FALSE FALSE FALSE FALSE FALSE
## 377 FALSE FALSE FALSE FALSE FALSE
## 378 FALSE FALSE FALSE FALSE FALSE
## 379 FALSE FALSE FALSE FALSE FALSE
## 380 FALSE FALSE FALSE FALSE FALSE
## 381 FALSE FALSE FALSE FALSE FALSE
## 382 FALSE FALSE FALSE FALSE FALSE
## 383 FALSE FALSE FALSE FALSE FALSE
## 384 FALSE FALSE FALSE FALSE FALSE
## 385 FALSE FALSE FALSE FALSE FALSE
## 386 FALSE FALSE FALSE FALSE FALSE
## 387 FALSE FALSE FALSE FALSE FALSE
## 388 FALSE FALSE FALSE FALSE FALSE
## 389 FALSE FALSE FALSE FALSE FALSE
## 390 FALSE FALSE FALSE FALSE FALSE
## 391 FALSE FALSE FALSE FALSE FALSE
## 392 FALSE FALSE FALSE FALSE FALSE
## 393 FALSE FALSE FALSE FALSE FALSE
## 394 FALSE FALSE FALSE FALSE FALSE
## 395 FALSE FALSE FALSE FALSE FALSE
## 396 FALSE FALSE FALSE FALSE FALSE
## 397 FALSE FALSE FALSE FALSE FALSE
## 398 FALSE FALSE FALSE FALSE FALSE
## 399 FALSE FALSE FALSE FALSE FALSE
## 400 FALSE FALSE FALSE FALSE FALSE
## 401 FALSE FALSE FALSE FALSE FALSE
## 402 FALSE FALSE FALSE FALSE FALSE
## 403 FALSE FALSE FALSE FALSE FALSE
## 404 FALSE FALSE FALSE FALSE FALSE
## 405 FALSE FALSE FALSE FALSE FALSE
## 406 FALSE FALSE FALSE FALSE FALSE
## 407 FALSE FALSE FALSE FALSE FALSE
## 408 FALSE FALSE FALSE FALSE FALSE
## 409 FALSE FALSE FALSE FALSE FALSE
## 410 FALSE FALSE FALSE FALSE FALSE
## 411 FALSE FALSE FALSE FALSE FALSE
## 412 FALSE FALSE FALSE FALSE FALSE
## 413 FALSE FALSE FALSE FALSE FALSE
## 414 FALSE FALSE FALSE FALSE FALSE
## 415 FALSE FALSE FALSE FALSE FALSE
## 416 FALSE FALSE FALSE FALSE FALSE
## 417 FALSE FALSE FALSE FALSE FALSE
## 418 FALSE FALSE FALSE FALSE FALSE
## 419 FALSE FALSE FALSE FALSE FALSE
## 420 FALSE FALSE FALSE FALSE FALSE
## 421 FALSE FALSE FALSE FALSE FALSE
## 422 FALSE FALSE FALSE FALSE FALSE
## 423 FALSE FALSE FALSE FALSE FALSE
## 424 FALSE FALSE FALSE FALSE FALSE
## 425 FALSE FALSE FALSE FALSE FALSE
## 426 FALSE FALSE FALSE FALSE FALSE
## 427 FALSE FALSE FALSE FALSE FALSE
## 428 FALSE FALSE FALSE FALSE FALSE
## 429 FALSE FALSE FALSE FALSE FALSE
## 430 FALSE FALSE FALSE FALSE FALSE
## 431 FALSE FALSE FALSE FALSE FALSE
## 432 FALSE FALSE FALSE FALSE FALSE
## 433 FALSE FALSE FALSE FALSE FALSE
## 434 FALSE FALSE FALSE FALSE FALSE
## 435 FALSE FALSE FALSE FALSE FALSE
## 436 FALSE FALSE FALSE FALSE FALSE
## 437 FALSE FALSE FALSE FALSE FALSE
## 438 FALSE FALSE FALSE FALSE FALSE
## 439 FALSE FALSE FALSE FALSE FALSE
## 440 FALSE FALSE FALSE FALSE FALSE
## 441 FALSE FALSE FALSE FALSE FALSE
## 442 FALSE FALSE FALSE FALSE FALSE
## 443 FALSE FALSE FALSE FALSE FALSE
## 444 FALSE FALSE FALSE FALSE FALSE
## 445 FALSE FALSE FALSE FALSE FALSE
## 446 FALSE FALSE FALSE FALSE FALSE
## 447 FALSE FALSE FALSE FALSE FALSE
## 448 FALSE FALSE FALSE FALSE FALSE
## 449 FALSE FALSE FALSE FALSE FALSE
## 450 FALSE FALSE FALSE FALSE FALSE
## 451 FALSE FALSE FALSE FALSE FALSE
## 452 FALSE FALSE FALSE FALSE FALSE
## 453 FALSE FALSE FALSE FALSE FALSE
## 454 FALSE FALSE FALSE FALSE FALSE
## 455 FALSE FALSE FALSE FALSE FALSE
## 456 FALSE FALSE FALSE FALSE FALSE
## 457 FALSE FALSE FALSE FALSE FALSE
## 458 FALSE FALSE FALSE FALSE FALSE
## 459 FALSE FALSE FALSE FALSE FALSE
## 460 FALSE FALSE FALSE FALSE FALSE
## 461 FALSE FALSE FALSE FALSE FALSE
## 462 FALSE FALSE FALSE FALSE FALSE
## 463 FALSE FALSE FALSE FALSE FALSE
## 464 FALSE FALSE FALSE FALSE FALSE
## 465 FALSE FALSE FALSE FALSE FALSE
## 466 FALSE FALSE FALSE FALSE FALSE
## 467 FALSE FALSE FALSE FALSE FALSE
## 468 FALSE FALSE FALSE FALSE FALSE
## 469 FALSE FALSE FALSE FALSE FALSE
## 470 FALSE FALSE FALSE FALSE FALSE
## 471 FALSE FALSE FALSE FALSE FALSE
## 472 FALSE FALSE FALSE FALSE FALSE
## 473 FALSE FALSE FALSE FALSE FALSE
## 474 FALSE FALSE FALSE FALSE FALSE
## 475 FALSE FALSE FALSE FALSE FALSE
## 476 FALSE FALSE FALSE FALSE FALSE
## 477 FALSE FALSE FALSE FALSE FALSE
## 478 FALSE FALSE FALSE FALSE FALSE
## 479 FALSE FALSE FALSE FALSE FALSE
## 480 FALSE FALSE FALSE FALSE FALSE
## 481 FALSE FALSE FALSE FALSE FALSE
## 482 FALSE FALSE FALSE FALSE FALSE
## 483 FALSE FALSE FALSE FALSE FALSE
## 484 FALSE FALSE FALSE FALSE FALSE
## 485 FALSE FALSE FALSE FALSE FALSE
## 486 FALSE FALSE FALSE FALSE FALSE
## 487 FALSE FALSE FALSE FALSE FALSE
## 488 FALSE FALSE FALSE FALSE FALSE
## 489 FALSE FALSE FALSE FALSE FALSE
## 490 FALSE FALSE FALSE FALSE FALSE
## 491 FALSE FALSE FALSE FALSE FALSE
## 492 FALSE FALSE FALSE FALSE FALSE
## 493 FALSE FALSE FALSE FALSE FALSE
## 494 FALSE FALSE FALSE FALSE FALSE
## 495 FALSE FALSE FALSE FALSE FALSE
## 496 FALSE FALSE FALSE FALSE FALSE
## 497 FALSE FALSE FALSE FALSE FALSE
## 498 FALSE FALSE FALSE FALSE FALSE
## 499 FALSE FALSE FALSE FALSE FALSE
## 500 FALSE FALSE FALSE FALSE FALSE
## 501 FALSE FALSE FALSE FALSE FALSE
## 502 FALSE FALSE FALSE FALSE FALSE
## 503 FALSE FALSE FALSE FALSE FALSE
## 504 FALSE FALSE FALSE FALSE FALSE
## Period.of.stay Traveler.type Pool Gym Tennis.court Spa Casino
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 2 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 3 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 4 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 5 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 6 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 7 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 8 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 9 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 10 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 11 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 12 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 13 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 14 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 15 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 16 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 17 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 18 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 19 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 20 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 21 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 22 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 23 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 24 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 25 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 26 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 27 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 28 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 29 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 30 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 31 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 32 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 33 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 34 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 35 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 36 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 37 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 38 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 39 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 40 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 41 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 42 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 43 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 44 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 45 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 46 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 47 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 48 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 49 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 50 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 51 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 52 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 53 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 54 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 55 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 56 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 57 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 58 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 59 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 60 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 61 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 62 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 63 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 64 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 65 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 66 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 67 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 68 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 69 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 70 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 71 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 72 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 73 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 74 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 75 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 76 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 77 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 78 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 79 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 80 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 81 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 82 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 83 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 84 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 85 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 86 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 87 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 88 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 89 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 90 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 91 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 92 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 93 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 94 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 95 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 96 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 97 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 98 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 99 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 100 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 101 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 102 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 103 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 104 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 105 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 106 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 107 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 108 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 109 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 110 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 111 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 112 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 113 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 114 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 115 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 116 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 117 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 118 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 119 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 120 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 121 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 122 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 123 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 124 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 125 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 126 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 127 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 128 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 129 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 130 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 131 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 132 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 133 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 134 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 135 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 136 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 137 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 138 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 139 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 140 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 141 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 142 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 143 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 144 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 145 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 146 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 147 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 148 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 149 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 150 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 151 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 152 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 153 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 154 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 155 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 156 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 157 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 158 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 159 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 160 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 161 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 162 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 163 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 164 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 165 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 166 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 167 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 168 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 169 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 170 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 171 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 172 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 173 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 174 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 175 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 176 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 177 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 178 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 179 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 180 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 181 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 182 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 183 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 184 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 185 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 186 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 187 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 188 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 189 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 190 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 191 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 192 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 193 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 194 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 195 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 196 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 197 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 198 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 199 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 200 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 201 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 202 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 203 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 204 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 205 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 206 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 207 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 208 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 209 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 210 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 211 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 212 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 213 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 214 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 215 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 216 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 217 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 218 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 219 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 220 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 221 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 222 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 223 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 224 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 225 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 226 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 227 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 228 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 229 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 230 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 231 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 232 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 233 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 234 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 235 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 236 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 237 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 238 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 239 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 240 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 241 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 242 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 243 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 244 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 245 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 246 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 247 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 248 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 249 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 250 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 251 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 252 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 253 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 254 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 255 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 256 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 257 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 258 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 259 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 260 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 261 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 262 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 263 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 264 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 265 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 266 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 267 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 268 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 269 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 270 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 271 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 272 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 273 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 274 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 275 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 276 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 277 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 278 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 279 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 280 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 281 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 282 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 283 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 284 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 285 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 286 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 287 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 288 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 289 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 290 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 291 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 292 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 293 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 294 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 295 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 296 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 297 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 298 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 299 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 300 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 301 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 302 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 303 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 304 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 305 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 306 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 307 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 308 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 309 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 310 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 311 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 312 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 313 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 314 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 315 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 316 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 317 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 318 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 319 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 320 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 321 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 322 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 323 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 324 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 325 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 326 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 327 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 328 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 329 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 330 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 331 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 332 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 333 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 334 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 335 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 336 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 337 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 338 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 339 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 340 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 341 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 342 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 343 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 344 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 345 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 346 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 347 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 348 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 349 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 350 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 351 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 352 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 353 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 354 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 355 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 356 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 357 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 358 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 359 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 360 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 361 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 362 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 363 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 364 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 365 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 366 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 367 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 368 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 369 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 370 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 371 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 372 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 373 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 374 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 375 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 376 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 377 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 378 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 379 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 380 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 381 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 382 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 383 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 384 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 385 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 386 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 387 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 388 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 389 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 390 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 391 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 392 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 393 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 394 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 395 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 396 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 397 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 398 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 399 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 400 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 401 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 402 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 403 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 404 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 405 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 406 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 407 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 408 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 409 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 410 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 411 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 412 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 413 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 414 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 415 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 416 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 417 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 418 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 419 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 420 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 421 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 422 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 423 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 424 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 425 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 426 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 427 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 428 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 429 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 430 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 431 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 432 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 433 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 434 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 435 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 436 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 437 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 438 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 439 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 440 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 441 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 442 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 443 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 444 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 445 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 446 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 447 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 448 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 449 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 450 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 451 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 452 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 453 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 454 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 455 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 456 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 457 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 458 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 459 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 460 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 461 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 462 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 463 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 464 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 465 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 466 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 467 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 468 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 469 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 470 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 471 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 472 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 473 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 474 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 475 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 476 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 477 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 478 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 479 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 480 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 481 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 482 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 483 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 484 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 485 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 486 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 487 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 488 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 489 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 490 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 491 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 492 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 493 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 494 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 495 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 496 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 497 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 498 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 499 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 500 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 501 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 502 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 503 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 504 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## Free.internet Hotel.name Hotel.stars Nr..rooms User.continent Member.years
## 1 FALSE FALSE FALSE FALSE FALSE FALSE
## 2 FALSE FALSE FALSE FALSE FALSE FALSE
## 3 FALSE FALSE FALSE FALSE FALSE FALSE
## 4 FALSE FALSE FALSE FALSE FALSE FALSE
## 5 FALSE FALSE FALSE FALSE FALSE FALSE
## 6 FALSE FALSE FALSE FALSE FALSE FALSE
## 7 FALSE FALSE FALSE FALSE FALSE FALSE
## 8 FALSE FALSE FALSE FALSE FALSE FALSE
## 9 FALSE FALSE FALSE FALSE FALSE FALSE
## 10 FALSE FALSE FALSE FALSE FALSE FALSE
## 11 FALSE FALSE FALSE FALSE FALSE FALSE
## 12 FALSE FALSE FALSE FALSE FALSE FALSE
## 13 FALSE FALSE FALSE FALSE FALSE FALSE
## 14 FALSE FALSE FALSE FALSE FALSE FALSE
## 15 FALSE FALSE FALSE FALSE FALSE FALSE
## 16 FALSE FALSE FALSE FALSE FALSE FALSE
## 17 FALSE FALSE FALSE FALSE FALSE FALSE
## 18 FALSE FALSE FALSE FALSE FALSE FALSE
## 19 FALSE FALSE FALSE FALSE FALSE FALSE
## 20 FALSE FALSE FALSE FALSE FALSE FALSE
## 21 FALSE FALSE FALSE FALSE FALSE FALSE
## 22 FALSE FALSE FALSE FALSE FALSE FALSE
## 23 FALSE FALSE FALSE FALSE FALSE FALSE
## 24 FALSE FALSE FALSE FALSE FALSE FALSE
## 25 FALSE FALSE FALSE FALSE FALSE FALSE
## 26 FALSE FALSE FALSE FALSE FALSE FALSE
## 27 FALSE FALSE FALSE FALSE FALSE FALSE
## 28 FALSE FALSE FALSE FALSE FALSE FALSE
## 29 FALSE FALSE FALSE FALSE FALSE FALSE
## 30 FALSE FALSE FALSE FALSE FALSE FALSE
## 31 FALSE FALSE FALSE FALSE FALSE FALSE
## 32 FALSE FALSE FALSE FALSE FALSE FALSE
## 33 FALSE FALSE FALSE FALSE FALSE FALSE
## 34 FALSE FALSE FALSE FALSE FALSE FALSE
## 35 FALSE FALSE FALSE FALSE FALSE FALSE
## 36 FALSE FALSE FALSE FALSE FALSE FALSE
## 37 FALSE FALSE FALSE FALSE FALSE FALSE
## 38 FALSE FALSE FALSE FALSE FALSE FALSE
## 39 FALSE FALSE FALSE FALSE FALSE FALSE
## 40 FALSE FALSE FALSE FALSE FALSE FALSE
## 41 FALSE FALSE FALSE FALSE FALSE FALSE
## 42 FALSE FALSE FALSE FALSE FALSE FALSE
## 43 FALSE FALSE FALSE FALSE FALSE FALSE
## 44 FALSE FALSE FALSE FALSE FALSE FALSE
## 45 FALSE FALSE FALSE FALSE FALSE FALSE
## 46 FALSE FALSE FALSE FALSE FALSE FALSE
## 47 FALSE FALSE FALSE FALSE FALSE FALSE
## 48 FALSE FALSE FALSE FALSE FALSE FALSE
## 49 FALSE FALSE FALSE FALSE FALSE FALSE
## 50 FALSE FALSE FALSE FALSE FALSE FALSE
## 51 FALSE FALSE FALSE FALSE FALSE FALSE
## 52 FALSE FALSE FALSE FALSE FALSE FALSE
## 53 FALSE FALSE FALSE FALSE FALSE FALSE
## 54 FALSE FALSE FALSE FALSE FALSE FALSE
## 55 FALSE FALSE FALSE FALSE FALSE FALSE
## 56 FALSE FALSE FALSE FALSE FALSE FALSE
## 57 FALSE FALSE FALSE FALSE FALSE FALSE
## 58 FALSE FALSE FALSE FALSE FALSE FALSE
## 59 FALSE FALSE FALSE FALSE FALSE FALSE
## 60 FALSE FALSE FALSE FALSE FALSE FALSE
## 61 FALSE FALSE FALSE FALSE FALSE FALSE
## 62 FALSE FALSE FALSE FALSE FALSE FALSE
## 63 FALSE FALSE FALSE FALSE FALSE FALSE
## 64 FALSE FALSE FALSE FALSE FALSE FALSE
## 65 FALSE FALSE FALSE FALSE FALSE FALSE
## 66 FALSE FALSE FALSE FALSE FALSE FALSE
## 67 FALSE FALSE FALSE FALSE FALSE FALSE
## 68 FALSE FALSE FALSE FALSE FALSE FALSE
## 69 FALSE FALSE FALSE FALSE FALSE FALSE
## 70 FALSE FALSE FALSE FALSE FALSE FALSE
## 71 FALSE FALSE FALSE FALSE FALSE FALSE
## 72 FALSE FALSE FALSE FALSE FALSE FALSE
## 73 FALSE FALSE FALSE FALSE FALSE FALSE
## 74 FALSE FALSE FALSE FALSE FALSE FALSE
## 75 FALSE FALSE FALSE FALSE FALSE FALSE
## 76 FALSE FALSE FALSE FALSE FALSE FALSE
## 77 FALSE FALSE FALSE FALSE FALSE FALSE
## 78 FALSE FALSE FALSE FALSE FALSE FALSE
## 79 FALSE FALSE FALSE FALSE FALSE FALSE
## 80 FALSE FALSE FALSE FALSE FALSE FALSE
## 81 FALSE FALSE FALSE FALSE FALSE FALSE
## 82 FALSE FALSE FALSE FALSE FALSE FALSE
## 83 FALSE FALSE FALSE FALSE FALSE FALSE
## 84 FALSE FALSE FALSE FALSE FALSE FALSE
## 85 FALSE FALSE FALSE FALSE FALSE FALSE
## 86 FALSE FALSE FALSE FALSE FALSE FALSE
## 87 FALSE FALSE FALSE FALSE FALSE FALSE
## 88 FALSE FALSE FALSE FALSE FALSE FALSE
## 89 FALSE FALSE FALSE FALSE FALSE FALSE
## 90 FALSE FALSE FALSE FALSE FALSE FALSE
## 91 FALSE FALSE FALSE FALSE FALSE FALSE
## 92 FALSE FALSE FALSE FALSE FALSE FALSE
## 93 FALSE FALSE FALSE FALSE FALSE FALSE
## 94 FALSE FALSE FALSE FALSE FALSE FALSE
## 95 FALSE FALSE FALSE FALSE FALSE FALSE
## 96 FALSE FALSE FALSE FALSE FALSE FALSE
## 97 FALSE FALSE FALSE FALSE FALSE FALSE
## 98 FALSE FALSE FALSE FALSE FALSE FALSE
## 99 FALSE FALSE FALSE FALSE FALSE FALSE
## 100 FALSE FALSE FALSE FALSE FALSE FALSE
## 101 FALSE FALSE FALSE FALSE FALSE FALSE
## 102 FALSE FALSE FALSE FALSE FALSE FALSE
## 103 FALSE FALSE FALSE FALSE FALSE FALSE
## 104 FALSE FALSE FALSE FALSE FALSE FALSE
## 105 FALSE FALSE FALSE FALSE FALSE FALSE
## 106 FALSE FALSE FALSE FALSE FALSE FALSE
## 107 FALSE FALSE FALSE FALSE FALSE FALSE
## 108 FALSE FALSE FALSE FALSE FALSE FALSE
## 109 FALSE FALSE FALSE FALSE FALSE FALSE
## 110 FALSE FALSE FALSE FALSE FALSE FALSE
## 111 FALSE FALSE FALSE FALSE FALSE FALSE
## 112 FALSE FALSE FALSE FALSE FALSE FALSE
## 113 FALSE FALSE FALSE FALSE FALSE FALSE
## 114 FALSE FALSE FALSE FALSE FALSE FALSE
## 115 FALSE FALSE FALSE FALSE FALSE FALSE
## 116 FALSE FALSE FALSE FALSE FALSE FALSE
## 117 FALSE FALSE FALSE FALSE FALSE FALSE
## 118 FALSE FALSE FALSE FALSE FALSE FALSE
## 119 FALSE FALSE FALSE FALSE FALSE FALSE
## 120 FALSE FALSE FALSE FALSE FALSE FALSE
## 121 FALSE FALSE FALSE FALSE FALSE FALSE
## 122 FALSE FALSE FALSE FALSE FALSE FALSE
## 123 FALSE FALSE FALSE FALSE FALSE FALSE
## 124 FALSE FALSE FALSE FALSE FALSE FALSE
## 125 FALSE FALSE FALSE FALSE FALSE FALSE
## 126 FALSE FALSE FALSE FALSE FALSE FALSE
## 127 FALSE FALSE FALSE FALSE FALSE FALSE
## 128 FALSE FALSE FALSE FALSE FALSE FALSE
## 129 FALSE FALSE FALSE FALSE FALSE FALSE
## 130 FALSE FALSE FALSE FALSE FALSE FALSE
## 131 FALSE FALSE FALSE FALSE FALSE FALSE
## 132 FALSE FALSE FALSE FALSE FALSE FALSE
## 133 FALSE FALSE FALSE FALSE FALSE FALSE
## 134 FALSE FALSE FALSE FALSE FALSE FALSE
## 135 FALSE FALSE FALSE FALSE FALSE FALSE
## 136 FALSE FALSE FALSE FALSE FALSE FALSE
## 137 FALSE FALSE FALSE FALSE FALSE FALSE
## 138 FALSE FALSE FALSE FALSE FALSE FALSE
## 139 FALSE FALSE FALSE FALSE FALSE FALSE
## 140 FALSE FALSE FALSE FALSE FALSE FALSE
## 141 FALSE FALSE FALSE FALSE FALSE FALSE
## 142 FALSE FALSE FALSE FALSE FALSE FALSE
## 143 FALSE FALSE FALSE FALSE FALSE FALSE
## 144 FALSE FALSE FALSE FALSE FALSE FALSE
## 145 FALSE FALSE FALSE FALSE FALSE FALSE
## 146 FALSE FALSE FALSE FALSE FALSE FALSE
## 147 FALSE FALSE FALSE FALSE FALSE FALSE
## 148 FALSE FALSE FALSE FALSE FALSE FALSE
## 149 FALSE FALSE FALSE FALSE FALSE FALSE
## 150 FALSE FALSE FALSE FALSE FALSE FALSE
## 151 FALSE FALSE FALSE FALSE FALSE FALSE
## 152 FALSE FALSE FALSE FALSE FALSE FALSE
## 153 FALSE FALSE FALSE FALSE FALSE FALSE
## 154 FALSE FALSE FALSE FALSE FALSE FALSE
## 155 FALSE FALSE FALSE FALSE FALSE FALSE
## 156 FALSE FALSE FALSE FALSE FALSE FALSE
## 157 FALSE FALSE FALSE FALSE FALSE FALSE
## 158 FALSE FALSE FALSE FALSE FALSE FALSE
## 159 FALSE FALSE FALSE FALSE FALSE FALSE
## 160 FALSE FALSE FALSE FALSE FALSE FALSE
## 161 FALSE FALSE FALSE FALSE FALSE FALSE
## 162 FALSE FALSE FALSE FALSE FALSE FALSE
## 163 FALSE FALSE FALSE FALSE FALSE FALSE
## 164 FALSE FALSE FALSE FALSE FALSE FALSE
## 165 FALSE FALSE FALSE FALSE FALSE FALSE
## 166 FALSE FALSE FALSE FALSE FALSE FALSE
## 167 FALSE FALSE FALSE FALSE FALSE FALSE
## 168 FALSE FALSE FALSE FALSE FALSE FALSE
## 169 FALSE FALSE FALSE FALSE FALSE FALSE
## 170 FALSE FALSE FALSE FALSE FALSE FALSE
## 171 FALSE FALSE FALSE FALSE FALSE FALSE
## 172 FALSE FALSE FALSE FALSE FALSE FALSE
## 173 FALSE FALSE FALSE FALSE FALSE FALSE
## 174 FALSE FALSE FALSE FALSE FALSE FALSE
## 175 FALSE FALSE FALSE FALSE FALSE FALSE
## 176 FALSE FALSE FALSE FALSE FALSE FALSE
## 177 FALSE FALSE FALSE FALSE FALSE FALSE
## 178 FALSE FALSE FALSE FALSE FALSE FALSE
## 179 FALSE FALSE FALSE FALSE FALSE FALSE
## 180 FALSE FALSE FALSE FALSE FALSE FALSE
## 181 FALSE FALSE FALSE FALSE FALSE FALSE
## 182 FALSE FALSE FALSE FALSE FALSE FALSE
## 183 FALSE FALSE FALSE FALSE FALSE FALSE
## 184 FALSE FALSE FALSE FALSE FALSE FALSE
## 185 FALSE FALSE FALSE FALSE FALSE FALSE
## 186 FALSE FALSE FALSE FALSE FALSE FALSE
## 187 FALSE FALSE FALSE FALSE FALSE FALSE
## 188 FALSE FALSE FALSE FALSE FALSE FALSE
## 189 FALSE FALSE FALSE FALSE FALSE FALSE
## 190 FALSE FALSE FALSE FALSE FALSE FALSE
## 191 FALSE FALSE FALSE FALSE FALSE FALSE
## 192 FALSE FALSE FALSE FALSE FALSE FALSE
## 193 FALSE FALSE FALSE FALSE FALSE FALSE
## 194 FALSE FALSE FALSE FALSE FALSE FALSE
## 195 FALSE FALSE FALSE FALSE FALSE FALSE
## 196 FALSE FALSE FALSE FALSE FALSE FALSE
## 197 FALSE FALSE FALSE FALSE FALSE FALSE
## 198 FALSE FALSE FALSE FALSE FALSE FALSE
## 199 FALSE FALSE FALSE FALSE FALSE FALSE
## 200 FALSE FALSE FALSE FALSE FALSE FALSE
## 201 FALSE FALSE FALSE FALSE FALSE FALSE
## 202 FALSE FALSE FALSE FALSE FALSE FALSE
## 203 FALSE FALSE FALSE FALSE FALSE FALSE
## 204 FALSE FALSE FALSE FALSE FALSE FALSE
## 205 FALSE FALSE FALSE FALSE FALSE FALSE
## 206 FALSE FALSE FALSE FALSE FALSE FALSE
## 207 FALSE FALSE FALSE FALSE FALSE FALSE
## 208 FALSE FALSE FALSE FALSE FALSE FALSE
## 209 FALSE FALSE FALSE FALSE FALSE FALSE
## 210 FALSE FALSE FALSE FALSE FALSE FALSE
## 211 FALSE FALSE FALSE FALSE FALSE FALSE
## 212 FALSE FALSE FALSE FALSE FALSE FALSE
## 213 FALSE FALSE FALSE FALSE FALSE FALSE
## 214 FALSE FALSE FALSE FALSE FALSE FALSE
## 215 FALSE FALSE FALSE FALSE FALSE FALSE
## 216 FALSE FALSE FALSE FALSE FALSE FALSE
## 217 FALSE FALSE FALSE FALSE FALSE FALSE
## 218 FALSE FALSE FALSE FALSE FALSE FALSE
## 219 FALSE FALSE FALSE FALSE FALSE FALSE
## 220 FALSE FALSE FALSE FALSE FALSE FALSE
## 221 FALSE FALSE FALSE FALSE FALSE FALSE
## 222 FALSE FALSE FALSE FALSE FALSE FALSE
## 223 FALSE FALSE FALSE FALSE FALSE FALSE
## 224 FALSE FALSE FALSE FALSE FALSE FALSE
## 225 FALSE FALSE FALSE FALSE FALSE FALSE
## 226 FALSE FALSE FALSE FALSE FALSE FALSE
## 227 FALSE FALSE FALSE FALSE FALSE FALSE
## 228 FALSE FALSE FALSE FALSE FALSE FALSE
## 229 FALSE FALSE FALSE FALSE FALSE FALSE
## 230 FALSE FALSE FALSE FALSE FALSE FALSE
## 231 FALSE FALSE FALSE FALSE FALSE FALSE
## 232 FALSE FALSE FALSE FALSE FALSE FALSE
## 233 FALSE FALSE FALSE FALSE FALSE FALSE
## 234 FALSE FALSE FALSE FALSE FALSE FALSE
## 235 FALSE FALSE FALSE FALSE FALSE FALSE
## 236 FALSE FALSE FALSE FALSE FALSE FALSE
## 237 FALSE FALSE FALSE FALSE FALSE FALSE
## 238 FALSE FALSE FALSE FALSE FALSE FALSE
## 239 FALSE FALSE FALSE FALSE FALSE FALSE
## 240 FALSE FALSE FALSE FALSE FALSE FALSE
## 241 FALSE FALSE FALSE FALSE FALSE FALSE
## 242 FALSE FALSE FALSE FALSE FALSE FALSE
## 243 FALSE FALSE FALSE FALSE FALSE FALSE
## 244 FALSE FALSE FALSE FALSE FALSE FALSE
## 245 FALSE FALSE FALSE FALSE FALSE FALSE
## 246 FALSE FALSE FALSE FALSE FALSE FALSE
## 247 FALSE FALSE FALSE FALSE FALSE FALSE
## 248 FALSE FALSE FALSE FALSE FALSE FALSE
## 249 FALSE FALSE FALSE FALSE FALSE FALSE
## 250 FALSE FALSE FALSE FALSE FALSE FALSE
## 251 FALSE FALSE FALSE FALSE FALSE FALSE
## 252 FALSE FALSE FALSE FALSE FALSE FALSE
## 253 FALSE FALSE FALSE FALSE FALSE FALSE
## 254 FALSE FALSE FALSE FALSE FALSE FALSE
## 255 FALSE FALSE FALSE FALSE FALSE FALSE
## 256 FALSE FALSE FALSE FALSE FALSE FALSE
## 257 FALSE FALSE FALSE FALSE FALSE FALSE
## 258 FALSE FALSE FALSE FALSE FALSE FALSE
## 259 FALSE FALSE FALSE FALSE FALSE FALSE
## 260 FALSE FALSE FALSE FALSE FALSE FALSE
## 261 FALSE FALSE FALSE FALSE FALSE FALSE
## 262 FALSE FALSE FALSE FALSE FALSE FALSE
## 263 FALSE FALSE FALSE FALSE FALSE FALSE
## 264 FALSE FALSE FALSE FALSE FALSE FALSE
## 265 FALSE FALSE FALSE FALSE FALSE FALSE
## 266 FALSE FALSE FALSE FALSE FALSE FALSE
## 267 FALSE FALSE FALSE FALSE FALSE FALSE
## 268 FALSE FALSE FALSE FALSE FALSE FALSE
## 269 FALSE FALSE FALSE FALSE FALSE FALSE
## 270 FALSE FALSE FALSE FALSE FALSE FALSE
## 271 FALSE FALSE FALSE FALSE FALSE FALSE
## 272 FALSE FALSE FALSE FALSE FALSE FALSE
## 273 FALSE FALSE FALSE FALSE FALSE FALSE
## 274 FALSE FALSE FALSE FALSE FALSE FALSE
## 275 FALSE FALSE FALSE FALSE FALSE FALSE
## 276 FALSE FALSE FALSE FALSE FALSE FALSE
## 277 FALSE FALSE FALSE FALSE FALSE FALSE
## 278 FALSE FALSE FALSE FALSE FALSE FALSE
## 279 FALSE FALSE FALSE FALSE FALSE FALSE
## 280 FALSE FALSE FALSE FALSE FALSE FALSE
## 281 FALSE FALSE FALSE FALSE FALSE FALSE
## 282 FALSE FALSE FALSE FALSE FALSE FALSE
## 283 FALSE FALSE FALSE FALSE FALSE FALSE
## 284 FALSE FALSE FALSE FALSE FALSE FALSE
## 285 FALSE FALSE FALSE FALSE FALSE FALSE
## 286 FALSE FALSE FALSE FALSE FALSE FALSE
## 287 FALSE FALSE FALSE FALSE FALSE FALSE
## 288 FALSE FALSE FALSE FALSE FALSE FALSE
## 289 FALSE FALSE FALSE FALSE FALSE FALSE
## 290 FALSE FALSE FALSE FALSE FALSE FALSE
## 291 FALSE FALSE FALSE FALSE FALSE FALSE
## 292 FALSE FALSE FALSE FALSE FALSE FALSE
## 293 FALSE FALSE FALSE FALSE FALSE FALSE
## 294 FALSE FALSE FALSE FALSE FALSE FALSE
## 295 FALSE FALSE FALSE FALSE FALSE FALSE
## 296 FALSE FALSE FALSE FALSE FALSE FALSE
## 297 FALSE FALSE FALSE FALSE FALSE FALSE
## 298 FALSE FALSE FALSE FALSE FALSE FALSE
## 299 FALSE FALSE FALSE FALSE FALSE FALSE
## 300 FALSE FALSE FALSE FALSE FALSE FALSE
## 301 FALSE FALSE FALSE FALSE FALSE FALSE
## 302 FALSE FALSE FALSE FALSE FALSE FALSE
## 303 FALSE FALSE FALSE FALSE FALSE FALSE
## 304 FALSE FALSE FALSE FALSE FALSE FALSE
## 305 FALSE FALSE FALSE FALSE FALSE FALSE
## 306 FALSE FALSE FALSE FALSE FALSE FALSE
## 307 FALSE FALSE FALSE FALSE FALSE FALSE
## 308 FALSE FALSE FALSE FALSE FALSE FALSE
## 309 FALSE FALSE FALSE FALSE FALSE FALSE
## 310 FALSE FALSE FALSE FALSE FALSE FALSE
## 311 FALSE FALSE FALSE FALSE FALSE FALSE
## 312 FALSE FALSE FALSE FALSE FALSE FALSE
## 313 FALSE FALSE FALSE FALSE FALSE FALSE
## 314 FALSE FALSE FALSE FALSE FALSE FALSE
## 315 FALSE FALSE FALSE FALSE FALSE FALSE
## 316 FALSE FALSE FALSE FALSE FALSE FALSE
## 317 FALSE FALSE FALSE FALSE FALSE FALSE
## 318 FALSE FALSE FALSE FALSE FALSE FALSE
## 319 FALSE FALSE FALSE FALSE FALSE FALSE
## 320 FALSE FALSE FALSE FALSE FALSE FALSE
## 321 FALSE FALSE FALSE FALSE FALSE FALSE
## 322 FALSE FALSE FALSE FALSE FALSE FALSE
## 323 FALSE FALSE FALSE FALSE FALSE FALSE
## 324 FALSE FALSE FALSE FALSE FALSE FALSE
## 325 FALSE FALSE FALSE FALSE FALSE FALSE
## 326 FALSE FALSE FALSE FALSE FALSE FALSE
## 327 FALSE FALSE FALSE FALSE FALSE FALSE
## 328 FALSE FALSE FALSE FALSE FALSE FALSE
## 329 FALSE FALSE FALSE FALSE FALSE FALSE
## 330 FALSE FALSE FALSE FALSE FALSE FALSE
## 331 FALSE FALSE FALSE FALSE FALSE FALSE
## 332 FALSE FALSE FALSE FALSE FALSE FALSE
## 333 FALSE FALSE FALSE FALSE FALSE FALSE
## 334 FALSE FALSE FALSE FALSE FALSE FALSE
## 335 FALSE FALSE FALSE FALSE FALSE FALSE
## 336 FALSE FALSE FALSE FALSE FALSE FALSE
## 337 FALSE FALSE FALSE FALSE FALSE FALSE
## 338 FALSE FALSE FALSE FALSE FALSE FALSE
## 339 FALSE FALSE FALSE FALSE FALSE FALSE
## 340 FALSE FALSE FALSE FALSE FALSE FALSE
## 341 FALSE FALSE FALSE FALSE FALSE FALSE
## 342 FALSE FALSE FALSE FALSE FALSE FALSE
## 343 FALSE FALSE FALSE FALSE FALSE FALSE
## 344 FALSE FALSE FALSE FALSE FALSE FALSE
## 345 FALSE FALSE FALSE FALSE FALSE FALSE
## 346 FALSE FALSE FALSE FALSE FALSE FALSE
## 347 FALSE FALSE FALSE FALSE FALSE FALSE
## 348 FALSE FALSE FALSE FALSE FALSE FALSE
## 349 FALSE FALSE FALSE FALSE FALSE FALSE
## 350 FALSE FALSE FALSE FALSE FALSE FALSE
## 351 FALSE FALSE FALSE FALSE FALSE FALSE
## 352 FALSE FALSE FALSE FALSE FALSE FALSE
## 353 FALSE FALSE FALSE FALSE FALSE FALSE
## 354 FALSE FALSE FALSE FALSE FALSE FALSE
## 355 FALSE FALSE FALSE FALSE FALSE FALSE
## 356 FALSE FALSE FALSE FALSE FALSE FALSE
## 357 FALSE FALSE FALSE FALSE FALSE FALSE
## 358 FALSE FALSE FALSE FALSE FALSE FALSE
## 359 FALSE FALSE FALSE FALSE FALSE FALSE
## 360 FALSE FALSE FALSE FALSE FALSE FALSE
## 361 FALSE FALSE FALSE FALSE FALSE FALSE
## 362 FALSE FALSE FALSE FALSE FALSE FALSE
## 363 FALSE FALSE FALSE FALSE FALSE FALSE
## 364 FALSE FALSE FALSE FALSE FALSE FALSE
## 365 FALSE FALSE FALSE FALSE FALSE FALSE
## 366 FALSE FALSE FALSE FALSE FALSE FALSE
## 367 FALSE FALSE FALSE FALSE FALSE FALSE
## 368 FALSE FALSE FALSE FALSE FALSE FALSE
## 369 FALSE FALSE FALSE FALSE FALSE FALSE
## 370 FALSE FALSE FALSE FALSE FALSE FALSE
## 371 FALSE FALSE FALSE FALSE FALSE FALSE
## 372 FALSE FALSE FALSE FALSE FALSE FALSE
## 373 FALSE FALSE FALSE FALSE FALSE FALSE
## 374 FALSE FALSE FALSE FALSE FALSE FALSE
## 375 FALSE FALSE FALSE FALSE FALSE FALSE
## 376 FALSE FALSE FALSE FALSE FALSE FALSE
## 377 FALSE FALSE FALSE FALSE FALSE FALSE
## 378 FALSE FALSE FALSE FALSE FALSE FALSE
## 379 FALSE FALSE FALSE FALSE FALSE FALSE
## 380 FALSE FALSE FALSE FALSE FALSE FALSE
## 381 FALSE FALSE FALSE FALSE FALSE FALSE
## 382 FALSE FALSE FALSE FALSE FALSE FALSE
## 383 FALSE FALSE FALSE FALSE FALSE FALSE
## 384 FALSE FALSE FALSE FALSE FALSE FALSE
## 385 FALSE FALSE FALSE FALSE FALSE FALSE
## 386 FALSE FALSE FALSE FALSE FALSE FALSE
## 387 FALSE FALSE FALSE FALSE FALSE FALSE
## 388 FALSE FALSE FALSE FALSE FALSE FALSE
## 389 FALSE FALSE FALSE FALSE FALSE FALSE
## 390 FALSE FALSE FALSE FALSE FALSE FALSE
## 391 FALSE FALSE FALSE FALSE FALSE FALSE
## 392 FALSE FALSE FALSE FALSE FALSE FALSE
## 393 FALSE FALSE FALSE FALSE FALSE FALSE
## 394 FALSE FALSE FALSE FALSE FALSE FALSE
## 395 FALSE FALSE FALSE FALSE FALSE FALSE
## 396 FALSE FALSE FALSE FALSE FALSE FALSE
## 397 FALSE FALSE FALSE FALSE FALSE FALSE
## 398 FALSE FALSE FALSE FALSE FALSE FALSE
## 399 FALSE FALSE FALSE FALSE FALSE FALSE
## 400 FALSE FALSE FALSE FALSE FALSE FALSE
## 401 FALSE FALSE FALSE FALSE FALSE FALSE
## 402 FALSE FALSE FALSE FALSE FALSE FALSE
## 403 FALSE FALSE FALSE FALSE FALSE FALSE
## 404 FALSE FALSE FALSE FALSE FALSE FALSE
## 405 FALSE FALSE FALSE FALSE FALSE FALSE
## 406 FALSE FALSE FALSE FALSE FALSE FALSE
## 407 FALSE FALSE FALSE FALSE FALSE FALSE
## 408 FALSE FALSE FALSE FALSE FALSE FALSE
## 409 FALSE FALSE FALSE FALSE FALSE FALSE
## 410 FALSE FALSE FALSE FALSE FALSE FALSE
## 411 FALSE FALSE FALSE FALSE FALSE FALSE
## 412 FALSE FALSE FALSE FALSE FALSE FALSE
## 413 FALSE FALSE FALSE FALSE FALSE FALSE
## 414 FALSE FALSE FALSE FALSE FALSE FALSE
## 415 FALSE FALSE FALSE FALSE FALSE FALSE
## 416 FALSE FALSE FALSE FALSE FALSE FALSE
## 417 FALSE FALSE FALSE FALSE FALSE FALSE
## 418 FALSE FALSE FALSE FALSE FALSE FALSE
## 419 FALSE FALSE FALSE FALSE FALSE FALSE
## 420 FALSE FALSE FALSE FALSE FALSE FALSE
## 421 FALSE FALSE FALSE FALSE FALSE FALSE
## 422 FALSE FALSE FALSE FALSE FALSE FALSE
## 423 FALSE FALSE FALSE FALSE FALSE FALSE
## 424 FALSE FALSE FALSE FALSE FALSE FALSE
## 425 FALSE FALSE FALSE FALSE FALSE FALSE
## 426 FALSE FALSE FALSE FALSE FALSE FALSE
## 427 FALSE FALSE FALSE FALSE FALSE FALSE
## 428 FALSE FALSE FALSE FALSE FALSE FALSE
## 429 FALSE FALSE FALSE FALSE FALSE FALSE
## 430 FALSE FALSE FALSE FALSE FALSE FALSE
## 431 FALSE FALSE FALSE FALSE FALSE FALSE
## 432 FALSE FALSE FALSE FALSE FALSE FALSE
## 433 FALSE FALSE FALSE FALSE FALSE FALSE
## 434 FALSE FALSE FALSE FALSE FALSE FALSE
## 435 FALSE FALSE FALSE FALSE FALSE FALSE
## 436 FALSE FALSE FALSE FALSE FALSE FALSE
## 437 FALSE FALSE FALSE FALSE FALSE FALSE
## 438 FALSE FALSE FALSE FALSE FALSE FALSE
## 439 FALSE FALSE FALSE FALSE FALSE FALSE
## 440 FALSE FALSE FALSE FALSE FALSE FALSE
## 441 FALSE FALSE FALSE FALSE FALSE FALSE
## 442 FALSE FALSE FALSE FALSE FALSE FALSE
## 443 FALSE FALSE FALSE FALSE FALSE FALSE
## 444 FALSE FALSE FALSE FALSE FALSE FALSE
## 445 FALSE FALSE FALSE FALSE FALSE FALSE
## 446 FALSE FALSE FALSE FALSE FALSE FALSE
## 447 FALSE FALSE FALSE FALSE FALSE FALSE
## 448 FALSE FALSE FALSE FALSE FALSE FALSE
## 449 FALSE FALSE FALSE FALSE FALSE FALSE
## 450 FALSE FALSE FALSE FALSE FALSE FALSE
## 451 FALSE FALSE FALSE FALSE FALSE FALSE
## 452 FALSE FALSE FALSE FALSE FALSE FALSE
## 453 FALSE FALSE FALSE FALSE FALSE FALSE
## 454 FALSE FALSE FALSE FALSE FALSE FALSE
## 455 FALSE FALSE FALSE FALSE FALSE FALSE
## 456 FALSE FALSE FALSE FALSE FALSE FALSE
## 457 FALSE FALSE FALSE FALSE FALSE FALSE
## 458 FALSE FALSE FALSE FALSE FALSE FALSE
## 459 FALSE FALSE FALSE FALSE FALSE FALSE
## 460 FALSE FALSE FALSE FALSE FALSE FALSE
## 461 FALSE FALSE FALSE FALSE FALSE FALSE
## 462 FALSE FALSE FALSE FALSE FALSE FALSE
## 463 FALSE FALSE FALSE FALSE FALSE FALSE
## 464 FALSE FALSE FALSE FALSE FALSE FALSE
## 465 FALSE FALSE FALSE FALSE FALSE FALSE
## 466 FALSE FALSE FALSE FALSE FALSE FALSE
## 467 FALSE FALSE FALSE FALSE FALSE FALSE
## 468 FALSE FALSE FALSE FALSE FALSE FALSE
## 469 FALSE FALSE FALSE FALSE FALSE FALSE
## 470 FALSE FALSE FALSE FALSE FALSE FALSE
## 471 FALSE FALSE FALSE FALSE FALSE FALSE
## 472 FALSE FALSE FALSE FALSE FALSE FALSE
## 473 FALSE FALSE FALSE FALSE FALSE FALSE
## 474 FALSE FALSE FALSE FALSE FALSE FALSE
## 475 FALSE FALSE FALSE FALSE FALSE FALSE
## 476 FALSE FALSE FALSE FALSE FALSE FALSE
## 477 FALSE FALSE FALSE FALSE FALSE FALSE
## 478 FALSE FALSE FALSE FALSE FALSE FALSE
## 479 FALSE FALSE FALSE FALSE FALSE FALSE
## 480 FALSE FALSE FALSE FALSE FALSE FALSE
## 481 FALSE FALSE FALSE FALSE FALSE FALSE
## 482 FALSE FALSE FALSE FALSE FALSE FALSE
## 483 FALSE FALSE FALSE FALSE FALSE FALSE
## 484 FALSE FALSE FALSE FALSE FALSE FALSE
## 485 FALSE FALSE FALSE FALSE FALSE FALSE
## 486 FALSE FALSE FALSE FALSE FALSE FALSE
## 487 FALSE FALSE FALSE FALSE FALSE FALSE
## 488 FALSE FALSE FALSE FALSE FALSE FALSE
## 489 FALSE FALSE FALSE FALSE FALSE FALSE
## 490 FALSE FALSE FALSE FALSE FALSE FALSE
## 491 FALSE FALSE FALSE FALSE FALSE FALSE
## 492 FALSE FALSE FALSE FALSE FALSE FALSE
## 493 FALSE FALSE FALSE FALSE FALSE FALSE
## 494 FALSE FALSE FALSE FALSE FALSE FALSE
## 495 FALSE FALSE FALSE FALSE FALSE FALSE
## 496 FALSE FALSE FALSE FALSE FALSE FALSE
## 497 FALSE FALSE FALSE FALSE FALSE FALSE
## 498 FALSE FALSE FALSE FALSE FALSE FALSE
## 499 FALSE FALSE FALSE FALSE FALSE FALSE
## 500 FALSE FALSE FALSE FALSE FALSE FALSE
## 501 FALSE FALSE FALSE FALSE FALSE FALSE
## 502 FALSE FALSE FALSE FALSE FALSE FALSE
## 503 FALSE FALSE FALSE FALSE FALSE FALSE
## 504 FALSE FALSE FALSE FALSE FALSE FALSE
## Review.month Review.weekday.
## 1 FALSE FALSE
## 2 FALSE FALSE
## 3 FALSE FALSE
## 4 FALSE FALSE
## 5 FALSE FALSE
## 6 FALSE FALSE
## 7 FALSE FALSE
## 8 FALSE FALSE
## 9 FALSE FALSE
## 10 FALSE FALSE
## 11 FALSE FALSE
## 12 FALSE FALSE
## 13 FALSE FALSE
## 14 FALSE FALSE
## 15 FALSE FALSE
## 16 FALSE FALSE
## 17 FALSE FALSE
## 18 FALSE FALSE
## 19 FALSE FALSE
## 20 FALSE FALSE
## 21 FALSE FALSE
## 22 FALSE FALSE
## 23 FALSE FALSE
## 24 FALSE FALSE
## 25 FALSE FALSE
## 26 FALSE FALSE
## 27 FALSE FALSE
## 28 FALSE FALSE
## 29 FALSE FALSE
## 30 FALSE FALSE
## 31 FALSE FALSE
## 32 FALSE FALSE
## 33 FALSE FALSE
## 34 FALSE FALSE
## 35 FALSE FALSE
## 36 FALSE FALSE
## 37 FALSE FALSE
## 38 FALSE FALSE
## 39 FALSE FALSE
## 40 FALSE FALSE
## 41 FALSE FALSE
## 42 FALSE FALSE
## 43 FALSE FALSE
## 44 FALSE FALSE
## 45 FALSE FALSE
## 46 FALSE FALSE
## 47 FALSE FALSE
## 48 FALSE FALSE
## 49 FALSE FALSE
## 50 FALSE FALSE
## 51 FALSE FALSE
## 52 FALSE FALSE
## 53 FALSE FALSE
## 54 FALSE FALSE
## 55 FALSE FALSE
## 56 FALSE FALSE
## 57 FALSE FALSE
## 58 FALSE FALSE
## 59 FALSE FALSE
## 60 FALSE FALSE
## 61 FALSE FALSE
## 62 FALSE FALSE
## 63 FALSE FALSE
## 64 FALSE FALSE
## 65 FALSE FALSE
## 66 FALSE FALSE
## 67 FALSE FALSE
## 68 FALSE FALSE
## 69 FALSE FALSE
## 70 FALSE FALSE
## 71 FALSE FALSE
## 72 FALSE FALSE
## 73 FALSE FALSE
## 74 FALSE FALSE
## 75 FALSE FALSE
## 76 FALSE FALSE
## 77 FALSE FALSE
## 78 FALSE FALSE
## 79 FALSE FALSE
## 80 FALSE FALSE
## 81 FALSE FALSE
## 82 FALSE FALSE
## 83 FALSE FALSE
## 84 FALSE FALSE
## 85 FALSE FALSE
## 86 FALSE FALSE
## 87 FALSE FALSE
## 88 FALSE FALSE
## 89 FALSE FALSE
## 90 FALSE FALSE
## 91 FALSE FALSE
## 92 FALSE FALSE
## 93 FALSE FALSE
## 94 FALSE FALSE
## 95 FALSE FALSE
## 96 FALSE FALSE
## 97 FALSE FALSE
## 98 FALSE FALSE
## 99 FALSE FALSE
## 100 FALSE FALSE
## 101 FALSE FALSE
## 102 FALSE FALSE
## 103 FALSE FALSE
## 104 FALSE FALSE
## 105 FALSE FALSE
## 106 FALSE FALSE
## 107 FALSE FALSE
## 108 FALSE FALSE
## 109 FALSE FALSE
## 110 FALSE FALSE
## 111 FALSE FALSE
## 112 FALSE FALSE
## 113 FALSE FALSE
## 114 FALSE FALSE
## 115 FALSE FALSE
## 116 FALSE FALSE
## 117 FALSE FALSE
## 118 FALSE FALSE
## 119 FALSE FALSE
## 120 FALSE FALSE
## 121 FALSE FALSE
## 122 FALSE FALSE
## 123 FALSE FALSE
## 124 FALSE FALSE
## 125 FALSE FALSE
## 126 FALSE FALSE
## 127 FALSE FALSE
## 128 FALSE FALSE
## 129 FALSE FALSE
## 130 FALSE FALSE
## 131 FALSE FALSE
## 132 FALSE FALSE
## 133 FALSE FALSE
## 134 FALSE FALSE
## 135 FALSE FALSE
## 136 FALSE FALSE
## 137 FALSE FALSE
## 138 FALSE FALSE
## 139 FALSE FALSE
## 140 FALSE FALSE
## 141 FALSE FALSE
## 142 FALSE FALSE
## 143 FALSE FALSE
## 144 FALSE FALSE
## 145 FALSE FALSE
## 146 FALSE FALSE
## 147 FALSE FALSE
## 148 FALSE FALSE
## 149 FALSE FALSE
## 150 FALSE FALSE
## 151 FALSE FALSE
## 152 FALSE FALSE
## 153 FALSE FALSE
## 154 FALSE FALSE
## 155 FALSE FALSE
## 156 FALSE FALSE
## 157 FALSE FALSE
## 158 FALSE FALSE
## 159 FALSE FALSE
## 160 FALSE FALSE
## 161 FALSE FALSE
## 162 FALSE FALSE
## 163 FALSE FALSE
## 164 FALSE FALSE
## 165 FALSE FALSE
## 166 FALSE FALSE
## 167 FALSE FALSE
## 168 FALSE FALSE
## 169 FALSE FALSE
## 170 FALSE FALSE
## 171 FALSE FALSE
## 172 FALSE FALSE
## 173 FALSE FALSE
## 174 FALSE FALSE
## 175 FALSE FALSE
## 176 FALSE FALSE
## 177 FALSE FALSE
## 178 FALSE FALSE
## 179 FALSE FALSE
## 180 FALSE FALSE
## 181 FALSE FALSE
## 182 FALSE FALSE
## 183 FALSE FALSE
## 184 FALSE FALSE
## 185 FALSE FALSE
## 186 FALSE FALSE
## 187 FALSE FALSE
## 188 FALSE FALSE
## 189 FALSE FALSE
## 190 FALSE FALSE
## 191 FALSE FALSE
## 192 FALSE FALSE
## 193 FALSE FALSE
## 194 FALSE FALSE
## 195 FALSE FALSE
## 196 FALSE FALSE
## 197 FALSE FALSE
## 198 FALSE FALSE
## 199 FALSE FALSE
## 200 FALSE FALSE
## 201 FALSE FALSE
## 202 FALSE FALSE
## 203 FALSE FALSE
## 204 FALSE FALSE
## 205 FALSE FALSE
## 206 FALSE FALSE
## 207 FALSE FALSE
## 208 FALSE FALSE
## 209 FALSE FALSE
## 210 FALSE FALSE
## 211 FALSE FALSE
## 212 FALSE FALSE
## 213 FALSE FALSE
## 214 FALSE FALSE
## 215 FALSE FALSE
## 216 FALSE FALSE
## 217 FALSE FALSE
## 218 FALSE FALSE
## 219 FALSE FALSE
## 220 FALSE FALSE
## 221 FALSE FALSE
## 222 FALSE FALSE
## 223 FALSE FALSE
## 224 FALSE FALSE
## 225 FALSE FALSE
## 226 FALSE FALSE
## 227 FALSE FALSE
## 228 FALSE FALSE
## 229 FALSE FALSE
## 230 FALSE FALSE
## 231 FALSE FALSE
## 232 FALSE FALSE
## 233 FALSE FALSE
## 234 FALSE FALSE
## 235 FALSE FALSE
## 236 FALSE FALSE
## 237 FALSE FALSE
## 238 FALSE FALSE
## 239 FALSE FALSE
## 240 FALSE FALSE
## 241 FALSE FALSE
## 242 FALSE FALSE
## 243 FALSE FALSE
## 244 FALSE FALSE
## 245 FALSE FALSE
## 246 FALSE FALSE
## 247 FALSE FALSE
## 248 FALSE FALSE
## 249 FALSE FALSE
## 250 FALSE FALSE
## 251 FALSE FALSE
## 252 FALSE FALSE
## 253 FALSE FALSE
## 254 FALSE FALSE
## 255 FALSE FALSE
## 256 FALSE FALSE
## 257 FALSE FALSE
## 258 FALSE FALSE
## 259 FALSE FALSE
## 260 FALSE FALSE
## 261 FALSE FALSE
## 262 FALSE FALSE
## 263 FALSE FALSE
## 264 FALSE FALSE
## 265 FALSE FALSE
## 266 FALSE FALSE
## 267 FALSE FALSE
## 268 FALSE FALSE
## 269 FALSE FALSE
## 270 FALSE FALSE
## 271 FALSE FALSE
## 272 FALSE FALSE
## 273 FALSE FALSE
## 274 FALSE FALSE
## 275 FALSE FALSE
## 276 FALSE FALSE
## 277 FALSE FALSE
## 278 FALSE FALSE
## 279 FALSE FALSE
## 280 FALSE FALSE
## 281 FALSE FALSE
## 282 FALSE FALSE
## 283 FALSE FALSE
## 284 FALSE FALSE
## 285 FALSE FALSE
## 286 FALSE FALSE
## 287 FALSE FALSE
## 288 FALSE FALSE
## 289 FALSE FALSE
## 290 FALSE FALSE
## 291 FALSE FALSE
## 292 FALSE FALSE
## 293 FALSE FALSE
## 294 FALSE FALSE
## 295 FALSE FALSE
## 296 FALSE FALSE
## 297 FALSE FALSE
## 298 FALSE FALSE
## 299 FALSE FALSE
## 300 FALSE FALSE
## 301 FALSE FALSE
## 302 FALSE FALSE
## 303 FALSE FALSE
## 304 FALSE FALSE
## 305 FALSE FALSE
## 306 FALSE FALSE
## 307 FALSE FALSE
## 308 FALSE FALSE
## 309 FALSE FALSE
## 310 FALSE FALSE
## 311 FALSE FALSE
## 312 FALSE FALSE
## 313 FALSE FALSE
## 314 FALSE FALSE
## 315 FALSE FALSE
## 316 FALSE FALSE
## 317 FALSE FALSE
## 318 FALSE FALSE
## 319 FALSE FALSE
## 320 FALSE FALSE
## 321 FALSE FALSE
## 322 FALSE FALSE
## 323 FALSE FALSE
## 324 FALSE FALSE
## 325 FALSE FALSE
## 326 FALSE FALSE
## 327 FALSE FALSE
## 328 FALSE FALSE
## 329 FALSE FALSE
## 330 FALSE FALSE
## 331 FALSE FALSE
## 332 FALSE FALSE
## 333 FALSE FALSE
## 334 FALSE FALSE
## 335 FALSE FALSE
## 336 FALSE FALSE
## 337 FALSE FALSE
## 338 FALSE FALSE
## 339 FALSE FALSE
## 340 FALSE FALSE
## 341 FALSE FALSE
## 342 FALSE FALSE
## 343 FALSE FALSE
## 344 FALSE FALSE
## 345 FALSE FALSE
## 346 FALSE FALSE
## 347 FALSE FALSE
## 348 FALSE FALSE
## 349 FALSE FALSE
## 350 FALSE FALSE
## 351 FALSE FALSE
## 352 FALSE FALSE
## 353 FALSE FALSE
## 354 FALSE FALSE
## 355 FALSE FALSE
## 356 FALSE FALSE
## 357 FALSE FALSE
## 358 FALSE FALSE
## 359 FALSE FALSE
## 360 FALSE FALSE
## 361 FALSE FALSE
## 362 FALSE FALSE
## 363 FALSE FALSE
## 364 FALSE FALSE
## 365 FALSE FALSE
## 366 FALSE FALSE
## 367 FALSE FALSE
## 368 FALSE FALSE
## 369 FALSE FALSE
## 370 FALSE FALSE
## 371 FALSE FALSE
## 372 FALSE FALSE
## 373 FALSE FALSE
## 374 FALSE FALSE
## 375 FALSE FALSE
## 376 FALSE FALSE
## 377 FALSE FALSE
## 378 FALSE FALSE
## 379 FALSE FALSE
## 380 FALSE FALSE
## 381 FALSE FALSE
## 382 FALSE FALSE
## 383 FALSE FALSE
## 384 FALSE FALSE
## 385 FALSE FALSE
## 386 FALSE FALSE
## 387 FALSE FALSE
## 388 FALSE FALSE
## 389 FALSE FALSE
## 390 FALSE FALSE
## 391 FALSE FALSE
## 392 FALSE FALSE
## 393 FALSE FALSE
## 394 FALSE FALSE
## 395 FALSE FALSE
## 396 FALSE FALSE
## 397 FALSE FALSE
## 398 FALSE FALSE
## 399 FALSE FALSE
## 400 FALSE FALSE
## 401 FALSE FALSE
## 402 FALSE FALSE
## 403 FALSE FALSE
## 404 FALSE FALSE
## 405 FALSE FALSE
## 406 FALSE FALSE
## 407 FALSE FALSE
## 408 FALSE FALSE
## 409 FALSE FALSE
## 410 FALSE FALSE
## 411 FALSE FALSE
## 412 FALSE FALSE
## 413 FALSE FALSE
## 414 FALSE FALSE
## 415 FALSE FALSE
## 416 FALSE FALSE
## 417 FALSE FALSE
## 418 FALSE FALSE
## 419 FALSE FALSE
## 420 FALSE FALSE
## 421 FALSE FALSE
## 422 FALSE FALSE
## 423 FALSE FALSE
## 424 FALSE FALSE
## 425 FALSE FALSE
## 426 FALSE FALSE
## 427 FALSE FALSE
## 428 FALSE FALSE
## 429 FALSE FALSE
## 430 FALSE FALSE
## 431 FALSE FALSE
## 432 FALSE FALSE
## 433 FALSE FALSE
## 434 FALSE FALSE
## 435 FALSE FALSE
## 436 FALSE FALSE
## 437 FALSE FALSE
## 438 FALSE FALSE
## 439 FALSE FALSE
## 440 FALSE FALSE
## 441 FALSE FALSE
## 442 FALSE FALSE
## 443 FALSE FALSE
## 444 FALSE FALSE
## 445 FALSE FALSE
## 446 FALSE FALSE
## 447 FALSE FALSE
## 448 FALSE FALSE
## 449 FALSE FALSE
## 450 FALSE FALSE
## 451 FALSE FALSE
## 452 FALSE FALSE
## 453 FALSE FALSE
## 454 FALSE FALSE
## 455 FALSE FALSE
## 456 FALSE FALSE
## 457 FALSE FALSE
## 458 FALSE FALSE
## 459 FALSE FALSE
## 460 FALSE FALSE
## 461 FALSE FALSE
## 462 FALSE FALSE
## 463 FALSE FALSE
## 464 FALSE FALSE
## 465 FALSE FALSE
## 466 FALSE FALSE
## 467 FALSE FALSE
## 468 FALSE FALSE
## 469 FALSE FALSE
## 470 FALSE FALSE
## 471 FALSE FALSE
## 472 FALSE FALSE
## 473 FALSE FALSE
## 474 FALSE FALSE
## 475 FALSE FALSE
## 476 FALSE FALSE
## 477 FALSE FALSE
## 478 FALSE FALSE
## 479 FALSE FALSE
## 480 FALSE FALSE
## 481 FALSE FALSE
## 482 FALSE FALSE
## 483 FALSE FALSE
## 484 FALSE FALSE
## 485 FALSE FALSE
## 486 FALSE FALSE
## 487 FALSE FALSE
## 488 FALSE FALSE
## 489 FALSE FALSE
## 490 FALSE FALSE
## 491 FALSE FALSE
## 492 FALSE FALSE
## 493 FALSE FALSE
## 494 FALSE FALSE
## 495 FALSE FALSE
## 496 FALSE FALSE
## 497 FALSE FALSE
## 498 FALSE FALSE
## 499 FALSE FALSE
## 500 FALSE FALSE
## 501 FALSE FALSE
## 502 FALSE FALSE
## 503 FALSE FALSE
## 504 FALSE FALSE
sum(is.na(dataset))
## [1] 0
dataset= dataset[-104,]
(there is no missing data (only one missing data in the row number104 after encoding))
statistical measures
1- five number summary for all numeric attributes
summary(dataset$Nr..reviews)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 12.00 23.00 48.05 54.00 775.00
summary(dataset$Nr..hotel.reviews)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 5.00 9.00 16.03 18.00 263.00
summary(dataset$Helpful.votes)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 8.00 16.00 31.61 34.50 365.00
summary(dataset$Score)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 4.000 4.000 4.123 5.000 5.000
summary(dataset$Hotel.stars)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.000 3.500 4.000 4.143 5.000 5.000
summary(dataset$Nr..rooms)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 188 826 2700 2198 3025 4027
summary(dataset$Member.years)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -1806.0000 2.0000 4.0000 0.7634 6.0000 13.0000
2- pie charts
pie chart for Traveler.type
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
dataset2 <- dataset %>% sample_n(49)
dataset2$Traveler.type %>% table() %>% pie() # plot pie chart without percentages
tab <- dataset2$Traveler.type %>% table()
precentages <- tab %>% prop.table() %>% round(3) * 100
txt <- paste0(names(tab), '\n', precentages, '%') # text on chart
pie(tab, labels=txt) # plot pie chart
pie chart for Period.of.stay
library(dplyr)
dataset2 <- dataset %>% sample_n(49)
dataset2$Period.of.stay %>% table() %>% pie() # plot pie chart without percentages
tab <- dataset2$Period.of.stay %>% table()
precentages <- tab %>% prop.table() %>% round(3) * 100
txt <- paste0(names(tab), '\n', precentages, '%') # text on chart
pie(tab, labels=txt) # plot pie chart
this pie chart for class label
from this pie chart we see that the class label is balanced
library(dplyr)
dataset2 <- dataset %>% sample_n(49)
dataset2$Period.of.stay %>% table() %>% pie() # plot pie chart without percentages
tab <- dataset2$Hotel.stars %>% table()
precentages <- tab %>% prop.table() %>% round(3) * 100
txt <- paste0(names(tab), '\n', precentages, '%') # text on chart
pie(tab, labels=txt) # plot pie chart
-------------------------------------------------------------------------------------------------------------------
| Figure | Description |
|---|---|
[Figure 1: Pie chart represents period of stay] |
We took a sample of 50 respondents in the ’ Period of Stay ’ category, and the results are represented in a pie chart. The breakdown of Period of Stay is as follows: In this sample, the majority was staying from Dec-Feb •Dec-Feb: 14 respondents (28.6 %) • Sep-Nov: 9 respondents (18.4%) • Mar-May: 14 respondents (28.6 %) • Jun-Aug-May: 12 respondents (24.4 %) In conclusion we observed distinct trends in reviewers choices of stay periods. Approximately 28.6% of reviewers favored staying in Las Vegas during the winter months, specifically from December to February. This preference for winter occupancy may be influenced by the appeal of holiday vacations, milder weather compared to the scorching summer,comprising 28.6% of reviewers, opted to visit during the springtime, from March to May, possibly drawn by the pleasant weather, outdoor activities, and spring events in Las Vegas. Conversely, about 24.4% of reviewers chose the period from June to August, highlighting a preference for the vibrant summer atmosphere and outdoor pool experiences. Lastly, 18.4% of reviewers selected the fall months from September to November, indicating an attraction to the autumn ambiance and potential seasonal events. |
[Figure 2: Scatter plot represents score of hotels ] |
Analyzing a scatter plot that compares hotels based on the number of stars and their scores reveals fascinating insights into the hospitality industry. The y-axis of the scatter plot represents the number of stars awarded to each hotel, ranging from one to five stars. The x-axis displays the hotels’ scores or ratings, reflecting their overall quality and guest satisfaction. In this visual representation, we observe a clear relationship between a hotel’s star rating and the likelihood of it having a swimming pool, with triangles denoting the presence of a swimming pool and circles indicating its absence. One striking observation is that as the number of stars increases, so does the probability of a hotel featuring a swimming pool. This trend aligns with the expectations of many travelers who associate higher star ratings with enhanced amenities. Hotels with four or five stars predominantly feature triangles, indicating a strong correlation between luxury and pool availability. As the star rating decreases to three and below, we start to see more circles, suggesting that budget and lower-rated hotels are less likely to have swimming pools. |
[Figure 3: Histogram represents the frequency of hotels name] |
After analyzing this histogram of hotel visitors, with the x-axis representing hotel names and the y-axis indicating the frequency of visitors, this graphical analysis underscores the diverse popularity levels among hotels. “Hotel 1” takes the lead in terms of visitor frequency, while the remaining hotels show a comparable level. By understanding what sets “Hotel 1” apart and considering strategies for the other hotels to distinguish themselves, the industry can work toward optimizing its appeal to a broader range of visitors and achieving a more balanced distribution of guests across its various hotel |
[Figure 4: histogram represents the frequency Nationality of hotel visitors]hotel visitors] |
Analyzing a histogram depicting hotel visitors in Las Vegas, where the x- axis symbolizes different countries represented by numbers and the y- axis represents the count of repeat visitors from each country Notably, the most frequently repeated number is 39, corresponding to the USA. This observation underscores the significance of the domestic market, emphasizing that American visitors form a substantial portion of Las Vegas’ hospitality clientele. The next most prevalent numbers are 1, 2, and 4, signifying Saudi Arabia, the United Kingdom, and India, respectively. This data indicates a considerable influx of visitors from .these countries Hotels in Las Vegas can strategically leverage this information to enhance their guest experience and capture the attention of repeat visitors from these countries. Recognizing the cultural diversity and preferences of guests from Saudi Arabia, the United Kingdom, and India, hotels can tailor their services, amenities, and marketing efforts to better accommodate and appeal to these specific demographics. This may include offering cuisine, entertainment, and activities that resonate with the cultural backgrounds of these guests |
Boxplot for numerical data:
boxplot(dataset$Nr..reviews)
boxplot(dataset$Nr..hotel.reviews)
boxplot(dataset$Helpful.votes)
boxplot(dataset$Score)
boxplot(dataset$Nr..rooms)
boxplot(dataset$Hotel.stars)
| Figure | Description |
|---|---|
| [plotbox represents the distribution and outliers of Nr..reviews] | we have a lot of outliers in the number of review but we don’t have to smooth it because it is not a measure for somthing and it could differ from 1 to other number of review |
| [plotbox represents the distribution and outliers of Nr..hotel.reviews] | we have a lot of outliers in the number of hotel review but we don’t have to smooth it because of the same reason as Nr..reviews |
| [plotbox represents the distribution and outliers of Helpful.votes] | we have a lot of outliers in the Helpful.votes but we don’t have to smooth it because of the same reason as Nr..reviews and Nr..hotel.reviews |
| [plotbox represents the distribution and outliers of Score] | 25% of the data lies below or equal to 4 and 75% of the data lies below or equal to 5 so the values are relatively clustered around 4 and 5, with a smaller presence at 1, there are only 2 outliers nedd to be smoothed |
| [plotbox represents the distribution and outliers of Nr..rooms] | we have a lot of outliers in the number of rooms but we don’t have to smooth it because of the same reason as Nr..reviews and Nr..hotel.reviews and Helpful.votes |
| [plotbox represents the distribution and outliers of Hotel.stars] | in the class label, we can see that 50% and less have 4 or less stars and the rest have 5 stars (most of the hotels have 5 stars as the plot illustrated) but there is no outliers to smooth |
4. Data preprocessing
Encoding for all the attributes
Data encoding involves converting information like hotel names and locations into numerical codes using the factor function. This simplifies data representation, leading to more efficient storage and faster processing. The use of numerical codes enhances analysis and query performance.
We encode all the attributes except for the ‘Nr rooms’ column, as this column already contains numerical values.
Data before Encoding
Data after Encoding
#encoding
dataset$User.country =factor(dataset$User.country, levels = c("Saudi Arabia", "UK", "Canada", "India", "Australia", "New Zeland", "Ireland", "Egypt", "Finland", "Kenya", "Jordan", "Netherlands", "Syria", "Scotland", "South Africa", "Swiss", "United Arab Emirates", "Hungary", "China", "Greece", "Mexico", "Croatia", "Germany", "Malaysia", "Thailand", "Phillippines", "Israel", "India", "Belgium", "Puerto Rico", "Switzerland", "Norway", "France", "Spain", "Singapore", "Brazil", "Costa Rica", "Iran", "USA", "Honduras", "Denmark", "Taiwan", "Hawaii", "Kuwait", "Czech Republic", "Japan", "Korea", "Italy"),
labels =c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48))
#to integer
#dataset$User.country <- as.integer(dataset$User.country)
dataset$Gym =factor(dataset$Gym, levels = c("NO", "YES"), labels = c(0, 1))
dataset$Tennis.court =factor(dataset$Tennis.court, levels = c("NO", "YES"), labels = c(0, 1))
dataset$Spa =factor(dataset$Spa, levels = c("NO", "YES"), labels = c(0, 1))
dataset$Casino =factor(dataset$Casino, levels = c("NO", "YES"), labels = c(0, 1))
dataset$Free.internet =factor(dataset$Free.internet, levels = c("NO", "YES"), labels = c(0, 1))
dataset$Pool =factor(dataset$Pool, levels = c("NO", "YES"), labels = c(0, 1))
dataset$Period.of.stay =factor(dataset$Period.of.stay, levels = c("Dec-Feb", "Mar-May","Jun-Aug","Sep-Nov"), labels = c(1, 2, 3, 4))
dataset$Review.weekday. =factor(dataset$Review.weekday , levels = c("Thursday","Thursday,","Friday","Friday,","Saturday","Saturday,","Tuesday","Tuesday,","Wednesday","Wednesday,","Sunday","Sunday,","Monday","Monday,"), labels = c(0,0,1,1,2,2,3,3,4,4,5,5,6,6))
dataset$Traveler.type =factor(dataset$Traveler.type, levels = c("Friends","Solo","Families","Couples","Business"), labels = c(0,1,2,3,4))
dataset$Hotel.name =factor(dataset$Hotel.name, levels = c("Circus Circus Hotel & Casino Las Vegas","Excalibur Hotel & Casino", "Monte Carlo Resort&Casino", "Treasure Island- TI Hotel & Casino", "Tropicana Las Vegas - A Double Tree by Hilton Hotel", "Caesars Palace", "The Cosmopolitan Las Vegas", "The Palazzo Resort Hotel Casino", "Wynn Las Vegas", "Trump International Hotel Las Vegas", "The Cromwell", "Encore at wynn Las Vegas", "Hilton Grand Vacations on the Boulevard", "Marriott's Grand Chateau", "Tuscany Las Vegas Suites & Casino", "Hilton Grand Vacations at the Flamingo", "Wyndham Grand Desert", "The Venetian Las Vegas Hotel", "Bellagio Las Vegas", "Paris Las Vegas", "The Westin las Vegas Hotel Casino & Spa")
, labels = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20))
dataset$Review.month =factor(dataset$Review.month, levels = c("April","August", "December", "February", "January", "July", "June", "March", "May", "November", "October", "September")
, labels = c(0,1,2,3,4,5,6,7,8,9,10,11))
dataset$User.continent=factor(dataset$User.continent, levels=c("North America","Europe","Asia","Oceania","Africa","South America"), labels=c(0,1,2,3,4,5))
3- histograms
2 histograms for User.country and Hotel.name
dataset$User.country <- as.integer(dataset$User.country)
dataset$Hotel.name <- as.integer(dataset$Hotel.name)
hist(dataset$User.country, breaks=48)
hist(dataset$Hotel.name, breaks=20)
4- scatter
with(dataset, plot(Score,Hotel.stars, col = Pool, pch = as.numeric(Pool)))
Data cleaning:
Find outlier and Delete outlier.
Identify the outliers, and remove the corresponding rows. This process aims to refine the dataset, enhancing its accuracy and facilitating more precise results in subsequent analyses.
Data before
finding outliers AND remove outliers
NOTE: RUN THE CODE TWICE WE HAVE TWO OUTLIERS
#outlaier
boxplot(dataset$Member.years)
#This line generates a boxplot to visually inspect the distribution of the "Member.years" column. Boxplots are useful for identifying potential outliers.
library(outliers)
#The code uses the 'outliers' package to detect outliers in the "Member.years" column and stores the logical result in the variable Out.
Out = outlier(dataset$Member.years, logical =TRUE)
sum(Out)
## [1] 1
Find_outlier = which(Out ==TRUE, arr.ind = TRUE)
#sum(Out) calculates the total number of outliers.which(Out == TRUE, arr.ind = TRUE) finds the indices of the outliers.
Out
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [73] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [97] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [109] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [133] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [145] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [157] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [169] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [181] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [193] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [205] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [217] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [229] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [241] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [253] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [265] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [277] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [289] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [301] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [313] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [325] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [337] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [349] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [361] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [373] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [385] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [397] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [409] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [421] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [433] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [445] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [457] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [469] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [481] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [493] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Find_outlier
## [1] 76
#Out and Find_outlier display the logical vector and indices of outliers. Outliers are then removed from the dataset using indexing.
#Remove outlier
dataset= dataset[-Find_outlier,]
boxplot(dataset$Member.years)
#This line generates a new boxplot after removing outliers to visualize the updated distribution.
View(dataset)
quantile(dataset$Member.years)
## 0% 25% 50% 75% 100%
## 0 2 4 6 13
Out = outlier(dataset$Member.years, logical =TRUE)
sum(Out)
## [1] 1
Find_outlier = which(Out ==TRUE, arr.ind = TRUE)
Out
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [97] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [109] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [133] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
## [145] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [157] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [169] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [181] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [193] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [205] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [217] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [229] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [241] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [253] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [265] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [277] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [289] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [301] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [313] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [325] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [337] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [349] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [361] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [373] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [385] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [397] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [409] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [421] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [433] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [445] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [457] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [469] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [481] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [493] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Find_outlier
## [1] 142
Normalization
Normalization of hotel “scores” is an essential preprocessing step for our dataset. By bringing all the scores to a standardized scale, typically between 0 and 1, code using both Min-Max and Z-score normalization methods, which can enhance the performance of machine learning algorithms.
Data before normalization
Data after normalization
#normalization
dataWithoutNormalization <- dataset
dataset [, 5] = scale(dataset [, 5])
#Define function normalize().
normalize <- function(x) {return ((x - min(x)) / (max(x) - min(x)))}
#Define function Z_normalize().
Z_normalize <- function(x) {return ((x - mean(x)) / sd(x))}
#Call normalize funcrtion
dataset$Score<-normalize(dataWithoutNormalization$Score)
preprossing to invert the attrbiute to factors
Inverting attributes to factors is particularly useful when dealing with qualitative or ordinal data, allowing for better interpretation and modeling in certain machine applications.
yes<-dataset
yes$Hotel.stars <- as.factor(yes$Hotel.stars)
yes$Pool <- as.factor(yes$Pool)
yes$Gym <- as.factor(yes$Gym)
yes$Spa <- as.factor(yes$Spa)
yes$Free.internet <- as.factor(yes$Free.internet)
yes$Tennis.court <- as.factor(yes$Tennis.court)
yes$Casino <- as.factor(yes$Casino)
---------------------------------------------------------------------------------------------------------------------------------------------------------
5. Data Mining Technique:
We applied both supervised and unsupervised to our dataset using classification which is supervised and clustering which is unsupervised techniques.
For classification, we used a decision tree Our model will predict the class label Hotel.stars which is a scale (1,5)
the prediction is made on the rest attributes Pool , Gym , Spa ,Free.internet ,Tennis.court , Casino This technique includes dividing
the dataset into two sets
1-Training dataset: use for train the model
2-Testing dataset: use for evaluate the model accuracy
we tried three different size of partitions to get the best Accuracy
packages for classification:
1-rpart
2-rpart.plot
packages for clustering :
1-factoextra
2-cluster
classification-gini index - 1 (Training 80%, Test 20%)
#install.packages("rpart")
#install.packages("rpart.plot")
library(rpart)
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.3.2
dataset.H <- yes
set.seed(234)
train1 = sample(1:nrow(dataset.H), 400)
dataset.train1=dataset.H[train1,]
dataset.test1=dataset.H[-train1,]
Hotel.stars.test1=dataset.H[-train1]
fit.tree = rpart(Hotel.stars ~ Pool + Gym + Spa + Free.internet + Tennis.court + Casino , data=dataset.train1, method = "class", cp=0.002)
fit.tree
## n= 400
##
## node), split, n, loss, yval, (yprob)
## * denotes terminal node
##
## 1) root 400 240 5 (0.19 0.14 0.23 0.035 0.4)
## 2) Spa=0 87 49 3 (0.44 0.4 0 0.16 0)
## 4) Gym=1 73 35 3 (0.52 0.48 0 0 0)
## 8) Pool=0 19 0 3 (1 0 0 0 0) *
## 9) Pool=1 54 19 3.5 (0.35 0.65 0 0 0)
## 18) Casino=0 34 15 3 (0.56 0.44 0 0 0)
## 36) Tennis.court=0 19 0 3 (1 0 0 0 0) *
## 37) Tennis.court=1 15 0 3.5 (0 1 0 0 0) *
## 19) Casino=1 20 0 3.5 (0 1 0 0 0) *
## 5) Gym=0 14 0 4.5 (0 0 0 1 0) *
## 3) Spa=1 313 153 5 (0.12 0.073 0.29 0 0.51)
## 6) Free.internet=0 20 0 4 (0 0 1 0 0) *
## 7) Free.internet=1 293 133 5 (0.13 0.078 0.24 0 0.55)
## 14) Tennis.court=1 74 37 4 (0.26 0 0.5 0 0.24) *
## 15) Tennis.court=0 219 77 5 (0.091 0.11 0.16 0 0.65) *
rpart.plot(fit.tree)
#try to save it in pdf file to view it clearly
pdf("tree_plot4.pdf", width = 12, height = 8)
rpart.plot(fit.tree)
dev.off()
## png
## 2
predictions <- predict(fit.tree, dataset.test1, type = "class")
# Confusion matrix
conf_matrix <- table(predictions, dataset.test1$Hotel.stars)
# Calculate accuracy
accuracy <- sum(diag(conf_matrix)) / sum(conf_matrix)
cat("Accuracy:", accuracy, "\n")
## Accuracy: 0.7058824
#calculate precision
precision <- diag(conf_matrix) / rowSums(conf_matrix)
cat("Precision for each class:", precision, "\n")
## Precision for each class: 1 1 0.5416667 1 0.5777778
cat("Average Precision:", mean(precision), "\n")
## Average Precision: 0.8238889
# Calculate Sensitivity (Recall)
sensitivity <- diag(conf_matrix) / colSums(conf_matrix)
cat("Sensitivity for each class:", sensitivity, "\n")
## Sensitivity for each class: 0.5263158 0.9285714 0.4814815 1 0.8125
cat("Average Sensitivity:", mean(sensitivity), "\n")
## Average Sensitivity: 0.7497737
# Calculate Specificity
specificity <- NULL
for (i in 1:ncol(conf_matrix)) {
temp <- conf_matrix[-i, -i]
specificity <- c(specificity, sum(diag(temp)) / sum(temp))
}
cat("Specificity for each class:", specificity, "\n")
## Specificity for each class: 0.746988 0.6704545 0.921875 0.673913 0.9019608
cat("Average Specificity:", mean(specificity), "\n")
## Average Specificity: 0.7830383
# Display confusion matrix
print(conf_matrix)
##
## predictions 3 3.5 4 4.5 5
## 3 10 0 0 0 0
## 3.5 0 13 0 0 0
## 4 5 0 13 0 6
## 4.5 0 0 0 10 0
## 5 4 1 14 0 26
The decision tree in the image is a classification model that predicts hotel star ratings based on amenities such as a spa, gym, free internet, pool, casino, and tennis court. It’s created using the Gini index method, which is a measure of statistical dispersion intended to represent the inequality or purity among the values of a frequency distribution In the context of decision trees, a Gini score gives an idea of how good a split is by how mixed the classes are in the two groups created by the split. The model’s accuracy is 0.7227723%, meaning that in approximately 72 out of 100 cases
classification-gini index - 2 (Training 90%, Test 10%)
#install.packages("rpart")
#install.packages("rpart.plot")
library(rpart)
library(rpart.plot)
set.seed(234)
train1 = sample(1:nrow(dataset.H), 450)
dataset.train1=dataset.H[train1,]
dataset.test1=dataset.H[-train1,]
Hotel.stars.test1=dataset.H[-train1]
fit.tree = rpart(Hotel.stars ~ Pool + Gym + Spa + Free.internet + Tennis.court + Casino , data=dataset.train1, method = "class", cp=0.002)
fit.tree
## n= 450
##
## node), split, n, loss, yval, (yprob)
## * denotes terminal node
##
## 1) root 450 276 5 (0.19 0.14 0.24 0.042 0.39)
## 2) Spa=0 103 60 3 (0.42 0.4 0 0.18 0)
## 4) Gym=1 84 41 3 (0.51 0.49 0 0 0)
## 8) Pool=0 23 0 3 (1 0 0 0 0) *
## 9) Pool=1 61 20 3.5 (0.33 0.67 0 0 0)
## 18) Casino=0 39 19 3 (0.51 0.49 0 0 0)
## 36) Tennis.court=0 20 0 3 (1 0 0 0 0) *
## 37) Tennis.court=1 19 0 3.5 (0 1 0 0 0) *
## 19) Casino=1 22 0 3.5 (0 1 0 0 0) *
## 5) Gym=0 19 0 4.5 (0 0 0 1 0) *
## 3) Spa=1 347 173 5 (0.13 0.066 0.31 0 0.5)
## 6) Free.internet=0 22 0 4 (0 0 1 0 0) *
## 7) Free.internet=1 325 151 5 (0.14 0.071 0.26 0 0.54)
## 14) Tennis.court=1 83 40 4 (0.25 0 0.52 0 0.23) *
## 15) Tennis.court=0 242 87 5 (0.095 0.095 0.17 0 0.64) *
rpart.plot(fit.tree)
#try to save it in pdf file to view it clearly
pdf("tree_plot4.pdf", width = 12, height = 8)
rpart.plot(fit.tree)
dev.off()
## png
## 2
predictions <- predict(fit.tree, dataset.test1, type = "class")
# Confusion matrix
conf_matrix <- table(predictions, dataset.test1$Hotel.stars)
# Calculate accuracy
accuracy <- sum(diag(conf_matrix)) / sum(conf_matrix)
cat("Accuracy:", accuracy, "\n")
## Accuracy: 0.6730769
#calculate precision
precision <- diag(conf_matrix) / rowSums(conf_matrix)
cat("Precision for each class:", precision, "\n")
## Precision for each class: 1 1 0.3846154 1 0.5909091
cat("Average Precision:", mean(precision), "\n")
## Average Precision: 0.7951049
# Calculate Sensitivity (Recall)
sensitivity <- diag(conf_matrix) / colSums(conf_matrix)
cat("Sensitivity for each class:", sensitivity, "\n")
## Sensitivity for each class: 0.5555556 0.875 0.4166667 1 0.7222222
cat("Average Sensitivity:", mean(sensitivity), "\n")
## Average Sensitivity: 0.7138889
# Calculate Specificity
specificity <- NULL
for (i in 1:ncol(conf_matrix)) {
temp <- conf_matrix[-i, -i]
specificity <- c(specificity, sum(diag(temp)) / sum(temp))
}
cat("Specificity for each class:", specificity, "\n")
## Specificity for each class: 0.6976744 0.6363636 0.9375 0.6382979 0.88
cat("Average Specificity:", mean(specificity), "\n")
## Average Specificity: 0.7579672
# Display confusion matrix
print(conf_matrix)
##
## predictions 3 3.5 4 4.5 5
## 3 5 0 0 0 0
## 3.5 0 7 0 0 0
## 4 3 0 5 0 5
## 4.5 0 0 0 5 0
## 5 1 1 7 0 13
The path of the decision tree same as the above tree.The model’s accuracy is 0.6862745%, meaning that in approximately 69 out of 100 cases, the model will correctly predict the star rating of a hotel based on these amenities.
classification- gini index - 3 (Training 75%, Test 25%)
#install.packages("rpart")
#install.packages("rpart.plot")
set.seed(234)
train1 = sample(1:nrow(dataset.H), 350)
dataset.train1=dataset.H[train1,]
dataset.test1=dataset.H[-train1,]
Hotel.stars.test1=dataset.H[-train1]
fit.tree = rpart(Hotel.stars ~ Pool + Gym + Spa + Free.internet + Tennis.court + Casino , data=dataset.train1, method = "class", cp=0.002)
fit.tree
## n= 350
##
## node), split, n, loss, yval, (yprob)
## * denotes terminal node
##
## 1) root 350 207 5 (0.19 0.15 0.23 0.029 0.41)
## 2) Spa=0 76 42 3.5 (0.42 0.45 0 0.13 0)
## 4) Gym=1 66 32 3.5 (0.48 0.52 0 0 0)
## 8) Pool=0 17 0 3 (1 0 0 0 0) *
## 9) Pool=1 49 15 3.5 (0.31 0.69 0 0 0)
## 18) Casino=0 29 14 3 (0.52 0.48 0 0 0)
## 36) Tennis.court=0 15 0 3 (1 0 0 0 0) *
## 37) Tennis.court=1 14 0 3.5 (0 1 0 0 0) *
## 19) Casino=1 20 0 3.5 (0 1 0 0 0) *
## 5) Gym=0 10 0 4.5 (0 0 0 1 0) *
## 3) Spa=1 274 131 5 (0.12 0.062 0.3 0 0.52)
## 6) Tennis.court=1 66 30 4 (0.23 0 0.55 0 0.23) *
## 7) Tennis.court=0 208 80 5 (0.087 0.082 0.22 0 0.62)
## 14) Free.internet=0 17 0 4 (0 0 1 0 0) *
## 15) Free.internet=1 191 63 5 (0.094 0.089 0.15 0 0.67) *
rpart.plot(fit.tree)
predictions <- predict(fit.tree, dataset.test1, type = "class")
# Confusion matrix
conf_matrix <- table(predictions, dataset.test1$Hotel.stars)
# Calculate accuracy
accuracy <- sum(diag(conf_matrix)) / sum(conf_matrix)
cat("Accuracy:", accuracy, "\n")
## Accuracy: 0.6644737
#calculate precision
precision <- diag(conf_matrix) / rowSums(conf_matrix)
cat("Precision for each class:", precision, "\n")
## Precision for each class: 1 1 0.4857143 1 0.5479452
cat("Average Precision:", mean(precision), "\n")
## Average Precision: 0.8067319
# Calculate Sensitivity (Recall)
sensitivity <- diag(conf_matrix) / colSums(conf_matrix)
cat("Sensitivity for each class:", sensitivity, "\n")
## Sensitivity for each class: 0.516129 0.6666667 0.4594595 1 0.8163265
cat("Average Sensitivity:", mean(sensitivity), "\n")
## Average Sensitivity: 0.6917163
# Calculate Specificity
specificity <- NULL
for (i in 1:ncol(conf_matrix)) {
temp <- conf_matrix[-i, -i]
specificity <- c(specificity, sum(diag(temp)) / sum(temp))
}
cat("Specificity for each class:", specificity, "\n")
## Specificity for each class: 0.7024793 0.6641221 0.8659794 0.6304348 0.8714286
cat("Average Specificity:", mean(specificity), "\n")
## Average Specificity: 0.7468888
# Display confusion matrix
print(conf_matrix)
##
## predictions 3 3.5 4 4.5 5
## 3 16 0 0 0 0
## 3.5 0 14 0 0 0
## 4 9 0 17 0 9
## 4.5 0 0 0 14 0
## 5 6 7 20 0 40
The path of the decision tree same as the above trees.The model’s accuracy is 0.6754967%, meaning that in approximately 68 out of 100 cases, the model will correctly predict the star rating of a hotel based on these amenities. from three different splitting we notice that when we took Training 80%, Test 20% has the highest accurecy.
classification-information gain - 1 (Training 70%,Test 30%)
set.seed(1234)
ind <- sample(2, nrow(yes), replace=TRUE, prob=c(0.7, 0.3))
trainData <- yes[ind==1,]
testData <- yes[ind==2,]
#install.packages('party')
library(party)
## Warning: package 'party' was built under R version 4.3.2
## Loading required package: grid
## Loading required package: mvtnorm
## Warning: package 'mvtnorm' was built under R version 4.3.2
## Loading required package: modeltools
## Loading required package: stats4
## Loading required package: strucchange
## Warning: package 'strucchange' was built under R version 4.3.2
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.2
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: sandwich
## Warning: package 'sandwich' was built under R version 4.3.2
##
## Attaching package: 'party'
## The following object is masked from 'package:dplyr':
##
## where
myFormula <- Hotel.stars ~ Pool + Gym + Spa + Free.internet + Tennis.court + Casino
dataset_ctree <- ctree(myFormula, data=trainData)
table(predict(dataset_ctree), trainData$Hotel.stars)
##
## 3 3.5 4 4.5 5
## 3 37 0 0 0 0
## 3.5 0 34 0 0 0
## 4 15 0 53 0 13
## 4.5 0 0 0 18 0
## 5 18 17 37 0 111
print(dataset_ctree)
##
## Conditional inference tree with 8 terminal nodes
##
## Response: Hotel.stars
## Inputs: Pool, Gym, Spa, Free.internet, Tennis.court, Casino
## Number of observations: 353
##
## 1) Gym == {0}; criterion = 1, statistic = 352
## 2)* weights = 18
## 1) Gym == {1}
## 3) Spa == {1}; criterion = 1, statistic = 162.224
## 4) Tennis.court == {1}; criterion = 1, statistic = 38.328
## 5)* weights = 64
## 4) Tennis.court == {0}
## 6) Free.internet == {0}; criterion = 1, statistic = 49.982
## 7)* weights = 17
## 6) Free.internet == {1}
## 8)* weights = 183
## 3) Spa == {0}
## 9) Pool == {0}; criterion = 1, statistic = 27.016
## 10)* weights = 21
## 9) Pool == {1}
## 11) Tennis.court == {0}; criterion = 0.997, statistic = 11.879
## 12) Casino == {0}; criterion = 1, statistic = 32
## 13)* weights = 16
## 12) Casino == {1}
## 14)* weights = 17
## 11) Tennis.court == {1}
## 15)* weights = 17
plot(dataset_ctree,type="simple")
plot(dataset_ctree)
# predict on test data
testPred <- predict(dataset_ctree, newdata = testData)
table(testPred, testData$Hotel.stars)
##
## testPred 3 3.5 4 4.5 5
## 3 11 0 0 0 0
## 3.5 0 14 0 0 0
## 4 9 0 17 0 11
## 4.5 0 0 0 6 0
## 5 6 7 11 0 57
#install.packages('caret')
library(caret)
## Warning: package 'caret' was built under R version 4.3.2
## Loading required package: ggplot2
## Loading required package: lattice
results <- confusionMatrix(testPred, testData$Hotel.stars)
acc <- results$overall["Accuracy"]*100
acc
## Accuracy
## 70.4698
results
## Confusion Matrix and Statistics
##
## Reference
## Prediction 3 3.5 4 4.5 5
## 3 11 0 0 0 0
## 3.5 0 14 0 0 0
## 4 9 0 17 0 11
## 4.5 0 0 0 6 0
## 5 6 7 11 0 57
##
## Overall Statistics
##
## Accuracy : 0.7047
## 95% CI : (0.6245, 0.7765)
## No Information Rate : 0.4564
## P-Value [Acc > NIR] : 7.702e-10
##
## Kappa : 0.5641
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 3 Class: 3.5 Class: 4 Class: 4.5 Class: 5
## Sensitivity 0.42308 0.66667 0.6071 1.00000 0.8382
## Specificity 1.00000 1.00000 0.8347 1.00000 0.7037
## Pos Pred Value 1.00000 1.00000 0.4595 1.00000 0.7037
## Neg Pred Value 0.89130 0.94815 0.9018 1.00000 0.8382
## Prevalence 0.17450 0.14094 0.1879 0.04027 0.4564
## Detection Rate 0.07383 0.09396 0.1141 0.04027 0.3826
## Detection Prevalence 0.07383 0.09396 0.2483 0.04027 0.5436
## Balanced Accuracy 0.71154 0.83333 0.7209 1.00000 0.7710
as.table(results)
## Reference
## Prediction 3 3.5 4 4.5 5
## 3 11 0 0 0 0
## 3.5 0 14 0 0 0
## 4 9 0 17 0 11
## 4.5 0 0 0 6 0
## 5 6 7 11 0 57
as.matrix(results)
## 3 3.5 4 4.5 5
## 3 11 0 0 0 0
## 3.5 0 14 0 0 0
## 4 9 0 17 0 11
## 4.5 0 0 0 6 0
## 5 6 7 11 0 57
as.matrix(results, what = "overall")
## [,1]
## Accuracy 7.046980e-01
## Kappa 5.641247e-01
## AccuracyLower 6.245186e-01
## AccuracyUpper 7.765375e-01
## AccuracyNull 4.563758e-01
## AccuracyPValue 7.701699e-10
## McnemarPValue NaN
as.matrix(results, what = "classes")
## 3 3.5 4 4.5 5
## Sensitivity 0.4230769 0.66666667 0.6071429 1.00000000 0.8382353
## Specificity 1.0000000 1.00000000 0.8347107 1.00000000 0.7037037
## Pos Pred Value 1.0000000 1.00000000 0.4594595 1.00000000 0.7037037
## Neg Pred Value 0.8913043 0.94814815 0.9017857 1.00000000 0.8382353
## Precision 1.0000000 1.00000000 0.4594595 1.00000000 0.7037037
## Recall 0.4230769 0.66666667 0.6071429 1.00000000 0.8382353
## F1 0.5945946 0.80000000 0.5230769 1.00000000 0.7651007
## Prevalence 0.1744966 0.14093960 0.1879195 0.04026846 0.4563758
## Detection Rate 0.0738255 0.09395973 0.1140940 0.04026846 0.3825503
## Detection Prevalence 0.0738255 0.09395973 0.2483221 0.04026846 0.5436242
## Balanced Accuracy 0.7115385 0.83333333 0.7209268 1.00000000 0.7709695
print(results)
## Confusion Matrix and Statistics
##
## Reference
## Prediction 3 3.5 4 4.5 5
## 3 11 0 0 0 0
## 3.5 0 14 0 0 0
## 4 9 0 17 0 11
## 4.5 0 0 0 6 0
## 5 6 7 11 0 57
##
## Overall Statistics
##
## Accuracy : 0.7047
## 95% CI : (0.6245, 0.7765)
## No Information Rate : 0.4564
## P-Value [Acc > NIR] : 7.702e-10
##
## Kappa : 0.5641
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 3 Class: 3.5 Class: 4 Class: 4.5 Class: 5
## Sensitivity 0.42308 0.66667 0.6071 1.00000 0.8382
## Specificity 1.00000 1.00000 0.8347 1.00000 0.7037
## Pos Pred Value 1.00000 1.00000 0.4595 1.00000 0.7037
## Neg Pred Value 0.89130 0.94815 0.9018 1.00000 0.8382
## Prevalence 0.17450 0.14094 0.1879 0.04027 0.4564
## Detection Rate 0.07383 0.09396 0.1141 0.04027 0.3826
## Detection Prevalence 0.07383 0.09396 0.2483 0.04027 0.5436
## Balanced Accuracy 0.71154 0.83333 0.7209 1.00000 0.7710
This decision tree represent a predictive model for hotel star ratings based on amenities such as a gym, spa, pool, tennis court, casino, and free internet. The method used for creating the tree is based on information gain from the highest to the Lowest information gain , which is a criterion for splitting the data in a way that maximizes the reduction of uncertainty The overall accuracy of the model is 70%, which means it correctly predicts the star rating of a hotel based on these features about 70% of the time. This metric gives an indication of the model’s performance on the dataset it was tested on
classification-information gain - 2 (Training 80%, Test 20%)
set.seed(1234)
ind <- sample(2, nrow(yes), replace=TRUE, prob=c(0.8, 0.2))
trainData <- yes[ind==1,]
testData <- yes[ind==2,]
#install.packages('party')
library(party)
myFormula <- Hotel.stars ~ Pool + Gym + Spa + Free.internet + Tennis.court + Casino
dataset_ctree <- ctree(myFormula, data=trainData)
table(predict(dataset_ctree), trainData$Hotel.stars)
##
## 3 3.5 4 4.5 5
## 3 40 0 0 0 0
## 3.5 0 39 0 0 0
## 4 18 0 60 0 17
## 4.5 0 0 0 20 0
## 5 19 19 43 0 134
print(dataset_ctree)
##
## Conditional inference tree with 8 terminal nodes
##
## Response: Hotel.stars
## Inputs: Pool, Gym, Spa, Free.internet, Tennis.court, Casino
## Number of observations: 409
##
## 1) Gym == {1}; criterion = 1, statistic = 408
## 2) Spa == {1}; criterion = 1, statistic = 190.805
## 3) Free.internet == {1}; criterion = 1, statistic = 45.125
## 4) Tennis.court == {0}; criterion = 1, statistic = 53.734
## 5)* weights = 215
## 4) Tennis.court == {1}
## 6)* weights = 74
## 3) Free.internet == {0}
## 7)* weights = 21
## 2) Spa == {0}
## 8) Tennis.court == {1}; criterion = 1, statistic = 28.966
## 9)* weights = 21
## 8) Tennis.court == {0}
## 10) Pool == {0}; criterion = 0.999, statistic = 14.558
## 11)* weights = 21
## 10) Pool == {1}
## 12) Casino == {1}; criterion = 1, statistic = 36
## 13)* weights = 18
## 12) Casino == {0}
## 14)* weights = 19
## 1) Gym == {0}
## 15)* weights = 20
plot(dataset_ctree,type="simple")
plot(dataset_ctree)
testPred <- predict(dataset_ctree, newdata = testData)
table(testPred, testData$Hotel.stars)
##
## testPred 3 3.5 4 4.5 5
## 3 8 0 0 0 0
## 3.5 0 9 0 0 0
## 4 6 0 10 0 7
## 4.5 0 0 0 4 0
## 5 5 5 5 0 34
#install.packages('caret')
library(caret)
results <- confusionMatrix(testPred, testData$Hotel.stars)
acc <- results$overall["Accuracy"]*100
acc
## Accuracy
## 69.89247
results
## Confusion Matrix and Statistics
##
## Reference
## Prediction 3 3.5 4 4.5 5
## 3 8 0 0 0 0
## 3.5 0 9 0 0 0
## 4 6 0 10 0 7
## 4.5 0 0 0 4 0
## 5 5 5 5 0 34
##
## Overall Statistics
##
## Accuracy : 0.6989
## 95% CI : (0.595, 0.7897)
## No Information Rate : 0.4409
## P-Value [Acc > NIR] : 4.413e-07
##
## Kappa : 0.5661
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 3 Class: 3.5 Class: 4 Class: 4.5 Class: 5
## Sensitivity 0.42105 0.64286 0.6667 1.00000 0.8293
## Specificity 1.00000 1.00000 0.8333 1.00000 0.7115
## Pos Pred Value 1.00000 1.00000 0.4348 1.00000 0.6939
## Neg Pred Value 0.87059 0.94048 0.9286 1.00000 0.8409
## Prevalence 0.20430 0.15054 0.1613 0.04301 0.4409
## Detection Rate 0.08602 0.09677 0.1075 0.04301 0.3656
## Detection Prevalence 0.08602 0.09677 0.2473 0.04301 0.5269
## Balanced Accuracy 0.71053 0.82143 0.7500 1.00000 0.7704
as.table(results)
## Reference
## Prediction 3 3.5 4 4.5 5
## 3 8 0 0 0 0
## 3.5 0 9 0 0 0
## 4 6 0 10 0 7
## 4.5 0 0 0 4 0
## 5 5 5 5 0 34
as.matrix(results)
## 3 3.5 4 4.5 5
## 3 8 0 0 0 0
## 3.5 0 9 0 0 0
## 4 6 0 10 0 7
## 4.5 0 0 0 4 0
## 5 5 5 5 0 34
as.matrix(results, what = "overall")
## [,1]
## Accuracy 6.989247e-01
## Kappa 5.660723e-01
## AccuracyLower 5.950233e-01
## AccuracyUpper 7.897406e-01
## AccuracyNull 4.408602e-01
## AccuracyPValue 4.412807e-07
## McnemarPValue NaN
as.matrix(results, what = "classes")
## 3 3.5 4 4.5 5
## Sensitivity 0.42105263 0.64285714 0.6666667 1.00000000 0.8292683
## Specificity 1.00000000 1.00000000 0.8333333 1.00000000 0.7115385
## Pos Pred Value 1.00000000 1.00000000 0.4347826 1.00000000 0.6938776
## Neg Pred Value 0.87058824 0.94047619 0.9285714 1.00000000 0.8409091
## Precision 1.00000000 1.00000000 0.4347826 1.00000000 0.6938776
## Recall 0.42105263 0.64285714 0.6666667 1.00000000 0.8292683
## F1 0.59259259 0.78260870 0.5263158 1.00000000 0.7555556
## Prevalence 0.20430108 0.15053763 0.1612903 0.04301075 0.4408602
## Detection Rate 0.08602151 0.09677419 0.1075269 0.04301075 0.3655914
## Detection Prevalence 0.08602151 0.09677419 0.2473118 0.04301075 0.5268817
## Balanced Accuracy 0.71052632 0.82142857 0.7500000 1.00000000 0.7704034
print(results)
## Confusion Matrix and Statistics
##
## Reference
## Prediction 3 3.5 4 4.5 5
## 3 8 0 0 0 0
## 3.5 0 9 0 0 0
## 4 6 0 10 0 7
## 4.5 0 0 0 4 0
## 5 5 5 5 0 34
##
## Overall Statistics
##
## Accuracy : 0.6989
## 95% CI : (0.595, 0.7897)
## No Information Rate : 0.4409
## P-Value [Acc > NIR] : 4.413e-07
##
## Kappa : 0.5661
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 3 Class: 3.5 Class: 4 Class: 4.5 Class: 5
## Sensitivity 0.42105 0.64286 0.6667 1.00000 0.8293
## Specificity 1.00000 1.00000 0.8333 1.00000 0.7115
## Pos Pred Value 1.00000 1.00000 0.4348 1.00000 0.6939
## Neg Pred Value 0.87059 0.94048 0.9286 1.00000 0.8409
## Prevalence 0.20430 0.15054 0.1613 0.04301 0.4409
## Detection Rate 0.08602 0.09677 0.1075 0.04301 0.3656
## Detection Prevalence 0.08602 0.09677 0.2473 0.04301 0.5269
## Balanced Accuracy 0.71053 0.82143 0.7500 1.00000 0.7704
The path of the decision tree same as the above trees.The overall accuracy of the model is 70%, which means it correctly predicts the star rating of a hotel based on these features about 70% of the time. This metric gives an indication of the model’s performance on the dataset it was tested on
classification-information gain - 3 (Training 90%, Test 10%)
set.seed(1234)
ind <- sample(2, nrow(yes), replace=TRUE, prob=c(0.9, 0.1))
trainData <- yes[ind==1,]
testData <- yes[ind==2,]
#install.packages('party')
library(party)
myFormula <- Hotel.stars ~ Pool + Gym + Spa + Free.internet + Tennis.court + Casino
dataset_ctree <- ctree(myFormula, data=trainData)
table(predict(dataset_ctree), trainData$Hotel.stars)
##
## 3 3.5 4 4.5 5
## 3 45 0 0 0 0
## 3.5 0 42 0 0 0
## 4 18 0 65 0 21
## 4.5 0 0 0 21 0
## 5 22 20 45 0 147
print(dataset_ctree)
##
## Conditional inference tree with 8 terminal nodes
##
## Response: Hotel.stars
## Inputs: Pool, Gym, Spa, Free.internet, Tennis.court, Casino
## Number of observations: 446
##
## 1) Gym == {1}; criterion = 1, statistic = 445
## 2) Spa == {1}; criterion = 1, statistic = 211.206
## 3) Free.internet == {0}; criterion = 1, statistic = 53.389
## 4)* weights = 24
## 3) Free.internet == {1}
## 5) Tennis.court == {1}; criterion = 1, statistic = 51.92
## 6)* weights = 80
## 5) Tennis.court == {0}
## 7)* weights = 234
## 2) Spa == {0}
## 8) Tennis.court == {0}; criterion = 1, statistic = 29.318
## 9) Pool == {0}; criterion = 1, statistic = 16.225
## 10)* weights = 23
## 9) Pool == {1}
## 11) Casino == {0}; criterion = 1, statistic = 42
## 12)* weights = 22
## 11) Casino == {1}
## 13)* weights = 21
## 8) Tennis.court == {1}
## 14)* weights = 21
## 1) Gym == {0}
## 15)* weights = 21
plot(dataset_ctree,type="simple")
plot(dataset_ctree)
# predict on test data
testPred <- predict(dataset_ctree, newdata = testData)
table(testPred, testData$Hotel.stars)
##
## testPred 3 3.5 4 4.5 5
## 3 3 0 0 0 0
## 3.5 0 6 0 0 0
## 4 6 0 5 0 3
## 4.5 0 0 0 3 0
## 5 2 4 3 0 21
#install.packages('caret')
library(caret)
results <- confusionMatrix(testPred, testData$Hotel.stars)
acc <- results$overall["Accuracy"]*100
acc
## Accuracy
## 67.85714
results
## Confusion Matrix and Statistics
##
## Reference
## Prediction 3 3.5 4 4.5 5
## 3 3 0 0 0 0
## 3.5 0 6 0 0 0
## 4 6 0 5 0 3
## 4.5 0 0 0 3 0
## 5 2 4 3 0 21
##
## Overall Statistics
##
## Accuracy : 0.6786
## 95% CI : (0.5404, 0.7971)
## No Information Rate : 0.4286
## P-Value [Acc > NIR] : 0.0001397
##
## Kappa : 0.5422
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 3 Class: 3.5 Class: 4 Class: 4.5 Class: 5
## Sensitivity 0.27273 0.6000 0.62500 1.00000 0.8750
## Specificity 1.00000 1.0000 0.81250 1.00000 0.7188
## Pos Pred Value 1.00000 1.0000 0.35714 1.00000 0.7000
## Neg Pred Value 0.84906 0.9200 0.92857 1.00000 0.8846
## Prevalence 0.19643 0.1786 0.14286 0.05357 0.4286
## Detection Rate 0.05357 0.1071 0.08929 0.05357 0.3750
## Detection Prevalence 0.05357 0.1071 0.25000 0.05357 0.5357
## Balanced Accuracy 0.63636 0.8000 0.71875 1.00000 0.7969
as.table(results)
## Reference
## Prediction 3 3.5 4 4.5 5
## 3 3 0 0 0 0
## 3.5 0 6 0 0 0
## 4 6 0 5 0 3
## 4.5 0 0 0 3 0
## 5 2 4 3 0 21
as.matrix(results)
## 3 3.5 4 4.5 5
## 3 3 0 0 0 0
## 3.5 0 6 0 0 0
## 4 6 0 5 0 3
## 4.5 0 0 0 3 0
## 5 2 4 3 0 21
as.matrix(results, what = "overall")
## [,1]
## Accuracy 0.6785714286
## Kappa 0.5422343324
## AccuracyLower 0.5403637655
## AccuracyUpper 0.7971454880
## AccuracyNull 0.4285714286
## AccuracyPValue 0.0001397439
## McnemarPValue NaN
as.matrix(results, what = "classes")
## 3 3.5 4 4.5 5
## Sensitivity 0.27272727 0.6000000 0.62500000 1.00000000 0.8750000
## Specificity 1.00000000 1.0000000 0.81250000 1.00000000 0.7187500
## Pos Pred Value 1.00000000 1.0000000 0.35714286 1.00000000 0.7000000
## Neg Pred Value 0.84905660 0.9200000 0.92857143 1.00000000 0.8846154
## Precision 1.00000000 1.0000000 0.35714286 1.00000000 0.7000000
## Recall 0.27272727 0.6000000 0.62500000 1.00000000 0.8750000
## F1 0.42857143 0.7500000 0.45454545 1.00000000 0.7777778
## Prevalence 0.19642857 0.1785714 0.14285714 0.05357143 0.4285714
## Detection Rate 0.05357143 0.1071429 0.08928571 0.05357143 0.3750000
## Detection Prevalence 0.05357143 0.1071429 0.25000000 0.05357143 0.5357143
## Balanced Accuracy 0.63636364 0.8000000 0.71875000 1.00000000 0.7968750
print(results)
## Confusion Matrix and Statistics
##
## Reference
## Prediction 3 3.5 4 4.5 5
## 3 3 0 0 0 0
## 3.5 0 6 0 0 0
## 4 6 0 5 0 3
## 4.5 0 0 0 3 0
## 5 2 4 3 0 21
##
## Overall Statistics
##
## Accuracy : 0.6786
## 95% CI : (0.5404, 0.7971)
## No Information Rate : 0.4286
## P-Value [Acc > NIR] : 0.0001397
##
## Kappa : 0.5422
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 3 Class: 3.5 Class: 4 Class: 4.5 Class: 5
## Sensitivity 0.27273 0.6000 0.62500 1.00000 0.8750
## Specificity 1.00000 1.0000 0.81250 1.00000 0.7188
## Pos Pred Value 1.00000 1.0000 0.35714 1.00000 0.7000
## Neg Pred Value 0.84906 0.9200 0.92857 1.00000 0.8846
## Prevalence 0.19643 0.1786 0.14286 0.05357 0.4286
## Detection Rate 0.05357 0.1071 0.08929 0.05357 0.3750
## Detection Prevalence 0.05357 0.1071 0.25000 0.05357 0.5357
## Balanced Accuracy 0.63636 0.8000 0.71875 1.00000 0.7969
The path of the decision tree same as the above trees.The overall accuracy of the model is 68%, which means it correctly predicts the star rating of a hotel based on these features about 68% of the time. This metric gives an indication of the model’s performance on the dataset it was tested on
classification- gain ratio - 1 (3 folds)
set.seed(1958)
folds <- createFolds(yes$Hotel.stars, k = 3)
# Specify 'method' as "J48" and 'trControl' for classification
C45Fit <- train(Hotel.stars ~ Pool + Gym + Spa + Free.internet + Tennis.court + Casino ,method = "J48", data = yes, tuneLength = 5, trControl = trainControl(method = "cv", index = folds))
C45Fit
## C4.5-like Trees
##
## 502 samples
## 6 predictor
## 5 classes: '3', '3.5', '4', '4.5', '5'
##
## No pre-processing
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 167, 167, 168
## Resampling results across tuning parameters:
##
## C M Accuracy Kappa
## 0.0100 1 0.6941877 0.5621606
## 0.0100 2 0.6941877 0.5621606
## 0.0100 3 0.6941877 0.5621606
## 0.0100 4 0.6941877 0.5621606
## 0.0100 5 0.6941877 0.5621606
## 0.1325 1 0.7131498 0.5956007
## 0.1325 2 0.7131498 0.5956007
## 0.1325 3 0.7131498 0.5956007
## 0.1325 4 0.7131498 0.5956007
## 0.1325 5 0.7131498 0.5956007
## 0.2550 1 0.7131498 0.5956007
## 0.2550 2 0.7131498 0.5956007
## 0.2550 3 0.7131498 0.5956007
## 0.2550 4 0.7131498 0.5956007
## 0.2550 5 0.7131498 0.5956007
## 0.3775 1 0.7131498 0.5956007
## 0.3775 2 0.7131498 0.5956007
## 0.3775 3 0.7131498 0.5956007
## 0.3775 4 0.7131498 0.5956007
## 0.3775 5 0.7131498 0.5956007
## 0.5000 1 0.7131498 0.5956007
## 0.5000 2 0.7131498 0.5956007
## 0.5000 3 0.7131498 0.5956007
## 0.5000 4 0.7131498 0.5956007
## 0.5000 5 0.7131498 0.5956007
##
## Accuracy was used to select the optimal model using the largest value.
## The final values used for the model were C = 0.1325 and M = 1.
C45Fit$finalModel
## J48 pruned tree
## ------------------
##
## Gym1 <= 0: 4.5 (24.0)
## Gym1 > 0
## | Spa1 <= 0
## | | Pool1 <= 0: 3 (24.0)
## | | Pool1 > 0
## | | | Tennis.court1 <= 0
## | | | | Casino1 <= 0: 3 (24.0)
## | | | | Casino1 > 0: 3.5 (24.0)
## | | | Tennis.court1 > 0: 3.5 (24.0)
## | Spa1 > 0
## | | Free.internet1 <= 0: 4 (24.0)
## | | Free.internet1 > 0
## | | | Tennis.court1 <= 0: 5 (264.0/96.0)
## | | | Tennis.court1 > 0: 4 (94.0/48.0)
##
## Number of Leaves : 8
##
## Size of the tree : 15
#install.packages("partykit")
library(partykit)
## Warning: package 'partykit' was built under R version 4.3.2
## Loading required package: libcoin
## Warning: package 'libcoin' was built under R version 4.3.2
##
## Attaching package: 'partykit'
## The following objects are masked from 'package:party':
##
## cforest, ctree, ctree_control, edge_simple, mob, mob_control,
## node_barplot, node_bivplot, node_boxplot, node_inner, node_surv,
## node_terminal, varimp
#visualize
constparty_model <- as.constparty(C45Fit$finalModel)
plot(constparty_model)
# Create test set
test <- yes[-folds$Fold1, ]
# Make predictions on the test set
predictions <- predict(C45Fit, newdata = test)
# Confusion matrix
conf_matrix <- table(predictions, test$Hotel.stars)
# Calculate accuracy
accuracy <- sum(diag(conf_matrix)) / sum(conf_matrix)
cat("Accuracy:", accuracy, "\n")
## Accuracy: 0.7283582
# Calculate Precision
precision <- diag(conf_matrix) / rowSums(conf_matrix)
cat("Precision for each class:", precision, "\n")
## Precision for each class: 1 1 0.6282051 1 0.6436782
cat("Average Precision:", mean(precision, na.rm = TRUE), "\n")
## Average Precision: 0.8543767
# Calculate Sensitivity (Recall)
sensitivity <- diag(conf_matrix) / colSums(conf_matrix)
cat("Sensitivity for each class:", sensitivity, "\n")
## Sensitivity for each class: 0.546875 0.6666667 0.6202532 1 0.875
cat("Average Sensitivity:", mean(sensitivity, na.rm = TRUE), "\n")
## Average Sensitivity: 0.741759
# Calculate Specificity
specificity <- NULL
for (i in 1:ncol(conf_matrix)) {
temp <- conf_matrix[-i, -i]
specificity <- c(specificity, sum(diag(temp)) / sum(temp))
}
cat("Specificity for each class:", specificity, "\n")
## Specificity for each class: 0.7712177 0.738676 0.8590308 0.7147335 0.9103448
cat("Average Specificity:", mean(specificity, na.rm = TRUE), "\n")
## Average Specificity: 0.7988006
# Display confusion matrix
conf_matrix
##
## predictions 3 3.5 4 4.5 5
## 3 35 0 0 0 0
## 3.5 0 32 0 0 0
## 4 13 0 49 0 16
## 4.5 0 0 0 16 0
## 5 16 16 30 0 112
The path of the decision tree same as the above trees.The overall accuracy of the model is 70%, which means it correctly predicts the star rating of a hotel based on these features about 70% of the time. This metric gives an indication of the model’s performance on the dataset it was tested on
classification- gain ratio - 2 (5 folds)
set.seed(1958)
folds <- createFolds(yes$Hotel.stars, k = 5)
C45Fit <- train(Hotel.stars ~ Pool + Gym + Spa + Free.internet + Tennis.court + Casino ,method = "J48", data = yes, tuneLength = 5, trControl = trainControl(method = "cv", index = folds))
C45Fit
## C4.5-like Trees
##
## 502 samples
## 6 predictor
## 5 classes: '3', '3.5', '4', '4.5', '5'
##
## No pre-processing
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 101, 101, 101, 99, 100
## Resampling results across tuning parameters:
##
## C M Accuracy Kappa
## 0.0100 1 0.6727812 0.5263655
## 0.0100 2 0.6727812 0.5263655
## 0.0100 3 0.6618359 0.5090478
## 0.0100 4 0.6204642 0.4471991
## 0.0100 5 0.5906629 0.4011308
## 0.1325 1 0.6922326 0.5586801
## 0.1325 2 0.6922326 0.5586801
## 0.1325 3 0.6812873 0.5413623
## 0.1325 4 0.6508882 0.4975185
## 0.1325 5 0.6111118 0.4363888
## 0.2550 1 0.7021828 0.5761220
## 0.2550 2 0.7021828 0.5761220
## 0.2550 3 0.6912376 0.5596575
## 0.2550 4 0.6608384 0.5162877
## 0.2550 5 0.6210620 0.4559578
## 0.3775 1 0.7021828 0.5761220
## 0.3775 2 0.7021828 0.5761220
## 0.3775 3 0.6912376 0.5596575
## 0.3775 4 0.6603409 0.5148511
## 0.3775 5 0.6205645 0.4560367
## 0.5000 1 0.7021828 0.5761220
## 0.5000 2 0.7021828 0.5761220
## 0.5000 3 0.6912376 0.5596575
## 0.5000 4 0.6603409 0.5148511
## 0.5000 5 0.6205645 0.4560367
##
## Accuracy was used to select the optimal model using the largest value.
## The final values used for the model were C = 0.255 and M = 1.
C45Fit$finalModel
## J48 pruned tree
## ------------------
##
## Gym1 <= 0: 4.5 (24.0)
## Gym1 > 0
## | Spa1 <= 0
## | | Pool1 <= 0: 3 (24.0)
## | | Pool1 > 0
## | | | Tennis.court1 <= 0
## | | | | Casino1 <= 0: 3 (24.0)
## | | | | Casino1 > 0: 3.5 (24.0)
## | | | Tennis.court1 > 0: 3.5 (24.0)
## | Spa1 > 0
## | | Free.internet1 <= 0: 4 (24.0)
## | | Free.internet1 > 0
## | | | Tennis.court1 <= 0: 5 (264.0/96.0)
## | | | Tennis.court1 > 0: 4 (94.0/48.0)
##
## Number of Leaves : 8
##
## Size of the tree : 15
#install.packages("partykit")
library(partykit)
constparty_model <- as.constparty(C45Fit$finalModel)
plot(constparty_model)
test <- yes[-folds$Fold1, ]
predictions <- predict(C45Fit, newdata = test)
conf_matrix <- table(predictions, test$Hotel.stars)
accuracy <- sum(diag(conf_matrix)) / sum(conf_matrix)
cat("Accuracy:", accuracy, "\n")
## Accuracy: 0.7182045
# Calculate Precision
precision <- diag(conf_matrix) / rowSums(conf_matrix)
cat("Precision for each class:", precision, "\n")
## Precision for each class: 1 1 0.6129032 1 0.6384977
cat("Average Precision:", mean(precision, na.rm = TRUE), "\n")
## Average Precision: 0.8502802
# Calculate Sensitivity (Recall)
sensitivity <- diag(conf_matrix) / colSums(conf_matrix)
cat("Sensitivity for each class:", sensitivity, "\n")
## Sensitivity for each class: 0.5131579 0.637931 0.606383 1 0.8831169
cat("Average Sensitivity:", mean(sensitivity, na.rm = TRUE), "\n")
## Average Sensitivity: 0.7281178
# Calculate Specificity
specificity <- NULL
for (i in 1:ncol(conf_matrix)) {
temp <- conf_matrix[-i, -i]
specificity <- c(specificity, sum(diag(temp)) / sum(temp))
}
cat("Specificity for each class:", specificity, "\n")
## Specificity for each class: 0.7661538 0.7317784 0.8523985 0.7041885 0.8941176
cat("Average Specificity:", mean(specificity, na.rm = TRUE), "\n")
## Average Specificity: 0.7897274
# Display confusion matrix
conf_matrix
##
## predictions 3 3.5 4 4.5 5
## 3 39 0 0 0 0
## 3.5 0 37 0 0 0
## 4 18 0 57 0 18
## 4.5 0 0 0 19 0
## 5 19 21 37 0 136
The path of the decision tree same as the above trees.The overall accuracy of the model is 70%, which means it correctly predicts the star rating of a hotel based on these features about 70% of the time. This metric gives an indication of the model’s performance on the dataset it was tested on
classification- gain ratio - 3 (10 folds)
The path of the decision tree same as the above trees.The overall accuracy of the model is 70%, which means it correctly predicts the star rating of a hotel based on these features about 70% of the time. This metric gives an indication of the model’s performance on the dataset it was tested on
set.seed(1958)
folds <- createFolds(yes$Hotel.stars, k = 10)
C45Fit <- train(Hotel.stars ~ Pool + Gym + Spa + Free.internet + Tennis.court + Casino ,method = "J48", data = yes, tuneLength = 5, trControl = trainControl(method = "cv", index = folds))
C45Fit
## C4.5-like Trees
##
## 502 samples
## 6 predictor
## 5 classes: '3', '3.5', '4', '4.5', '5'
##
## No pre-processing
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 50, 49, 50, 50, 51, 51, ...
## Resampling results across tuning parameters:
##
## C M Accuracy Kappa
## 0.0100 1 0.6040334 0.4266561
## 0.0100 2 0.5989450 0.4195428
## 0.0100 3 0.5454158 0.3387777
## 0.0100 4 0.5035295 0.2728574
## 0.0100 5 0.4988835 0.2669659
## 0.1325 1 0.6633355 0.5167734
## 0.1325 2 0.6126716 0.4418786
## 0.1325 3 0.5544861 0.3551720
## 0.1325 4 0.5079641 0.2824662
## 0.1325 5 0.5033181 0.2765747
## 0.2550 1 0.6682028 0.5241364
## 0.2550 2 0.6173176 0.4485439
## 0.2550 3 0.5540432 0.3545729
## 0.2550 4 0.5130526 0.2888491
## 0.2550 5 0.5033181 0.2765747
## 0.3775 1 0.6772834 0.5433795
## 0.3775 2 0.6263982 0.4685977
## 0.3775 3 0.5631238 0.3756551
## 0.3775 4 0.5219115 0.3117947
## 0.3775 5 0.5121770 0.2996174
## 0.5000 1 0.6772834 0.5433795
## 0.5000 2 0.6263982 0.4685977
## 0.5000 3 0.5631238 0.3756551
## 0.5000 4 0.5219115 0.3117947
## 0.5000 5 0.5121770 0.2996174
##
## Accuracy was used to select the optimal model using the largest value.
## The final values used for the model were C = 0.3775 and M = 1.
C45Fit$finalModel
## J48 pruned tree
## ------------------
##
## Gym1 <= 0: 4.5 (24.0)
## Gym1 > 0
## | Spa1 <= 0
## | | Pool1 <= 0: 3 (24.0)
## | | Pool1 > 0
## | | | Tennis.court1 <= 0
## | | | | Casino1 <= 0: 3 (24.0)
## | | | | Casino1 > 0: 3.5 (24.0)
## | | | Tennis.court1 > 0: 3.5 (24.0)
## | Spa1 > 0
## | | Free.internet1 <= 0: 4 (24.0)
## | | Free.internet1 > 0
## | | | Tennis.court1 <= 0: 5 (264.0/96.0)
## | | | Tennis.court1 > 0: 4 (94.0/48.0)
##
## Number of Leaves : 8
##
## Size of the tree : 15
#install.packages("partykit")
library(partykit)
#visualize
constparty_model <- as.constparty(C45Fit$finalModel)
plot(constparty_model)
test <- yes[-folds$Fold1, ]
predictions <- predict(C45Fit, newdata = test)
conf_matrix <- table(predictions, test$Hotel.stars)
accuracy <- sum(diag(conf_matrix)) / sum(conf_matrix)
cat("Accuracy:", accuracy, "\n")
## Accuracy: 0.7146018
# Calculate Precision
precision <- diag(conf_matrix) / rowSums(conf_matrix)
cat("Precision for each class:", precision, "\n")
## Precision for each class: 1 1 0.5943396 1 0.6371308
cat("Average Precision:", mean(precision, na.rm = TRUE), "\n")
## Average Precision: 0.8462941
# Calculate Sensitivity (Recall)
sensitivity <- diag(conf_matrix) / colSums(conf_matrix)
cat("Sensitivity for each class:", sensitivity, "\n")
## Sensitivity for each class: 0.5057471 0.6769231 0.5943396 1 0.8728324
cat("Average Sensitivity:", mean(sensitivity, na.rm = TRUE), "\n")
## Average Sensitivity: 0.7299684
# Calculate Specificity
specificity <- NULL
for (i in 1:ncol(conf_matrix)) {
temp <- conf_matrix[-i, -i]
specificity <- c(specificity, sum(diag(temp)) / sum(temp))
}
cat("Specificity for each class:", specificity, "\n")
## Specificity for each class: 0.7643836 0.7209302 0.8580858 0.7006961 0.8911917
cat("Average Specificity:", mean(specificity, na.rm = TRUE), "\n")
## Average Specificity: 0.7870575
# Display confusion matrix
conf_matrix
##
## predictions 3 3.5 4 4.5 5
## 3 44 0 0 0 0
## 3.5 0 44 0 0 0
## 4 21 0 63 0 22
## 4.5 0 0 0 21 0
## 5 22 21 43 0 151
| gini index | gini index | gini index | information gain | information gain | information gain | gain ratio | gain ratio | gain ratio | |
|---|---|---|---|---|---|---|---|---|---|
| 75% training, 25% test | 80% training, 20% test | 90% training, 10% test | 70% training, 30% test | 80% training, 20% test | 90% training, 10% test | 3 folds | 5 folds | 10 folds | |
| accuracy | 67.5% | 72% | 68.6% | 71.6% | 69% | 66% | 71,8% | 71.2 | 71.6 |
| precision | 81% | 83% | 80% | 83% | 82% | 80% | 84% | 84% | 84% |
| sensitivity | 70% | 76% | 74% | 72% | 70% | 65% | 73% | 72% | 73% |
| specificity | 75.5% | 80% | 77% | 91% | 90% | 89.9% | 79% | 78% | 78.8% |
Our accuracy is constant in gain ratio method because of our dataset is small, changing the number of folds may not have a significant impact on model performance. Cross-validation is generally more effective with larger datasets.
Information gain is the best way to apply to our data, because it gives higher accuracy results than other methods.
clustring prepreocessing Data types should be transformed into numeric types before clustering.
yes1<-yes
yes1$Pool <- as.numeric(yes1$Pool)
yes1$Gym <- as.numeric(yes1$Gym)
yes1$Spa <- as.numeric(yes1$Spa)
yes1$Free.internet <- as.numeric(yes1$Free.internet)
yes1$Tennis.court <- as.numeric(yes1$Tennis.court)
yes1$Casino <- as.numeric(yes1$Casino)
View(yes1)
Create a new dataset with only numeric attributes
new_dataset <- yes1[, sapply(yes1, is.numeric)]
new_dataset <- scale(new_dataset)
View(new_dataset)
# Specify the subset of attributes for clustering
subset_attributes <- c("Pool", "Gym", "Spa", "Free.internet", "Tennis.court", "Casino")
# Subset the dataset to include only the specified attributes
subset_dataset <- new_dataset[, subset_attributes]
BCubed precision and recall
# Function to calculate BCubed precision for a specific class label in a cluster
calculate_BCubed_precision <- function(cluster_assignments, true_labels, class_label) {
num_points <- length(cluster_assignments)
precision_sum <- 0
for (i in 1:num_points) {
cluster_indices <- which(cluster_assignments == cluster_assignments[i])
class_indices <- which(true_labels == class_label)
common_indices <- length(intersect(cluster_indices, class_indices))
cluster_size <- length(cluster_indices)
precision_sum <- precision_sum + (common_indices / cluster_size)
}
BCubed_precision <- precision_sum / num_points
return(BCubed_precision)
}
# Function to calculate BCubed recall for a specific class label in a cluster
calculate_BCubed_recall <- function(cluster_assignments, true_labels, class_label) {
num_points <- length(cluster_assignments)
recall_sum <- 0
for (i in 1:num_points) {
cluster_indices <- which(cluster_assignments == cluster_assignments[i])
class_indices <- which(true_labels == class_label)
common_indices <- length(intersect(cluster_indices, class_indices))
class_size <- length(class_indices)
recall_sum <- recall_sum + (common_indices / class_size)
}
BCubed_recall <- recall_sum / num_points
return(BCubed_recall)
}
# Specify the class labels (replace with actual class labels in your data)
class_labels <- c("3", "3,5", "4", "4,5","5")
# Calculate BCubed precision and recall for each class label
BCubed_precision_recall_results <- matrix(NA, nrow = length(class_labels), ncol = 2,
dimnames = list(class_labels, c("BCubed_Precision", "BCubed_Recall")))
run k-means clustering to find 4 clusters
set.seed(8953)
kmeans.result <- kmeans(subset_dataset, 4)
kmeans.result
## K-means clustering with 4 clusters of sizes 48, 406, 24, 24
##
## Cluster means:
## Pool Gym Spa Free.internet Tennis.court Casino
## 1 0.2238508 0.22385081 -1.782412 0.2238508 0.62418313 -3.0723756
## 2 0.2238508 -0.05293024 0.282994 0.2238508 -0.00832275 0.3248327
## 3 -4.4583620 0.22385081 -1.782412 0.2238508 -0.55378654 0.3248327
## 4 0.2238508 0.22385081 0.559920 -4.4583620 -0.55378654 0.3248327
##
## Clustering vector:
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
## 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
## 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4
## 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 79 80 81
## 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2
## 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 102 103 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1
## 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422
## 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 503 504
## 2 2
##
## Within cluster sum of squares by cluster:
## [1] 6.660540e+01 1.128214e+03 2.399863e-29 2.044875e-29
## (between_SS / total_SS = 60.3 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
#3- visualize clustering
#install.packages("factoextra")
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.3.2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
fviz_cluster(kmeans.result, data = subset_dataset)
kmeans.result$tot.withinss
## [1] 1194.82
kmeans.result$tot.withinss
## [1] 1194.82
kmeans.result$tot.withinss
## [1] 1194.82
kmeans.result$tot.withinss
## [1] 1194.82
kmeans.result$tot.withinss
## [1] 1194.82
kmeans.result$tot.withinss
## [1] 1194.82
#silhouette
library(cluster)
avg_sil <- silhouette(kmeans.result$cluster,dist(subset_dataset)) #a dissimilarity object inheriting from class dist or coercible to one. If not specified, dmatrix must be.
fviz_silhouette(avg_sil)#k-means clustering with estimating k and initializations
## cluster size ave.sil.width
## 1 1 48 0.73
## 2 2 406 0.66
## 3 3 24 1.00
## 4 4 24 1.00
#BCubed precision and recall
for (i in 1:length(class_labels)) {
BCubed_precision_recall_results[i, 1] <- calculate_BCubed_precision(kmeans.result$cluster, yes1$Hotel.stars, class_labels[i])
BCubed_precision_recall_results[i, 2] <- calculate_BCubed_recall(kmeans.result$cluster, yes1$Hotel.stars, class_labels[i])
}
# View the results
print(BCubed_precision_recall_results)
## BCubed_Precision BCubed_Recall
## 3 0.1912351 0.4402390
## 3,5 0.0000000 NaN
## 4 0.2350598 0.6539942
## 4,5 0.0000000 NaN
## 5 0.3824701 0.8087649
#print(BCubed_precision_recall_results)
#BCubed_Precision BCubed_Recall
#3 0.19161677 0.4401198
#3,5 0.14371257 0.5708583
#4 0.23552894 0.6537095
#4,5 0.04790419 0.8083832
#5 0.38123752 0.8083832
run k-means clustering to find 2 clusters
set.seed(8953)
kmeans.result2 <- kmeans(subset_dataset, 2)
kmeans.result2
## K-means clustering with 2 clusters of sizes 478, 24
##
## Cluster means:
## Pool Gym Spa Free.internet Tennis.court Casino
## 1 -0.01123937 0.2238508 0.08949348 -0.01123937 0.02780518 -0.01630959
## 2 0.22385081 -4.4583620 -1.78241186 0.22385081 -0.55378654 0.32483267
##
## Clustering vector:
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 79 80 81
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 102 103 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
## 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
## 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 503 504
## 1 1
##
## Within cluster sum of squares by cluster:
## [1] 2.412008e+03 2.399863e-29
## (between_SS / total_SS = 19.8 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
#3- visualize clustering
library(factoextra)
fviz_cluster(kmeans.result2, data = subset_dataset)
kmeans.result2$tot.withinss
## [1] 2412.008
#silhouette
library(cluster)
avg_sil <- silhouette(kmeans.result2$cluster,dist(subset_dataset))
fviz_silhouette(avg_sil)
## cluster size ave.sil.width
## 1 1 478 0.58
## 2 2 24 1.00
#BCubed precision and recall
for (i in 1:length(class_labels)) {
BCubed_precision_recall_results[i, 1] <- calculate_BCubed_precision(kmeans.result2$cluster, yes1$Hotel.stars, class_labels[i])
BCubed_precision_recall_results[i, 2] <- calculate_BCubed_recall(kmeans.result2$cluster, yes1$Hotel.stars, class_labels[i])
}
# View the results
print(BCubed_precision_recall_results)
## BCubed_Precision BCubed_Recall
## 3 0.1912351 0.9521912
## 3,5 0.0000000 NaN
## 4 0.2350598 0.9521912
## 4,5 0.0000000 NaN
## 5 0.3824701 0.9521912
run k-means clustering to find 6 clusters
set.seed(8953)
kmeans.result3 <- kmeans(subset_dataset, 6)
kmeans.result3
## K-means clustering with 6 clusters of sizes 24, 48, 288, 24, 94, 24
##
## Cluster means:
## Pool Gym Spa Free.internet Tennis.court Casino
## 1 -4.4583620 0.2238508 -1.7824119 0.2238508 -0.5537865 0.3248327
## 2 0.2238508 0.2238508 -1.7824119 0.2238508 0.6241831 -3.0723756
## 3 0.2238508 0.2238508 0.3647256 0.2238508 -0.5537865 0.3248327
## 4 0.2238508 0.2238508 0.5599200 -4.4583620 -0.5537865 0.3248327
## 5 0.2238508 0.2238508 0.5599200 0.2238508 1.8021528 0.3248327
## 6 0.2238508 -4.4583620 -1.7824119 0.2238508 -0.5537865 0.3248327
##
## Clustering vector:
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
## 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
## 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4
## 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 79 80 81
## 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5
## 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
## 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
## 102 103 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
## 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3
## 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
## 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5
## 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
## 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3
## 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 6 6
## 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
## 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
## 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
## 6 6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5
## 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
## 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2
## 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402
## 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422
## 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 503 504
## 3 3
##
## Within cluster sum of squares by cluster:
## [1] 2.399863e-29 6.660540e+01 1.207034e+02 2.044875e-29 1.937752e-27
## [6] 2.399863e-29
## (between_SS / total_SS = 93.8 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
#3- visualize clustering
library(factoextra)
fviz_cluster(kmeans.result3, data = subset_dataset)
kmeans.result3$tot.withinss
## [1] 187.3088
#silhouette
library(cluster)
avg_sil <- silhouette(kmeans.result3$cluster,dist(subset_dataset))
fviz_silhouette(avg_sil)
## cluster size ave.sil.width
## 1 1 24 1.00
## 2 2 48 0.71
## 3 3 288 0.87
## 4 4 24 1.00
## 5 5 94 1.00
## 6 6 24 1.00
#BCubed precision and recall
for (i in 1:length(class_labels)) {
BCubed_precision_recall_results[i, 1] <- calculate_BCubed_precision(kmeans.result3$cluster, yes1$Hotel.stars, class_labels[i])
BCubed_precision_recall_results[i, 2] <- calculate_BCubed_recall(kmeans.result3$cluster, yes1$Hotel.stars, class_labels[i])
}
# View the results
print(BCubed_precision_recall_results)
## BCubed_Precision BCubed_Recall
## 3 0.1912351 0.2260956
## 3,5 0.0000000 NaN
## 4 0.2350598 0.3160916
## 4,5 0.0000000 NaN
## 5 0.3824701 0.5253984
| Col1 | Col2 | Col3 | Col4 | |||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| k=2 | k=4 | k=6 | ||||||||||||||||||||||||||||||||||||||||||||||
| Average Silhouette width |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||
| total within-cluster sum of square | |
|
|
|||||||||||||||||||||||||||||||||||||||||||||
| BCubed precision | |
3: 0.19161677 3,5: 0.14371257 4 : 0.23552894 4,5: 0.04790419 5: 0.38123752 |
|
|||||||||||||||||||||||||||||||||||||||||||||
| BCubed recall | |
3: 0.4401198 3,5: 0.5708583 4 : 0.6537095 4,5: 0.8083832 5: 0.8083832 |
|
7. Findings:
At the beginning, we selected a dataset that represents the rating of las veags hotels that been extracted from TripAdvisor we want to predict the hotels stars based on amenities such as a Pool, Gym, Spa, Free Internet, Tennis Court, and Casino.
To enhance the accuracy and efficiency of our analysis, we initially focused on gaining a deep understanding of our dataset. This was achieved by utilizing a range of statistical tools, including pie charts, scatter plots, and histograms, to explore the data’s characteristics. We conducted thorough checks for any null or missing values and determined that our dataset was complete, with no missing entries. Additionally, we identified and removed any outliers, as these could negatively impact the accuracy of our results.
After that we applied data transformation, so we encode encoding for all the attributes also we normilze the data in range 0,1
In the final stages of our analysis, we executed classification and clustering techniques.
For the classification, we opted for the decision tree approach and experimented with three attribute selection measures (IG, G ratio, Gini index) and three different splits of training and testing data:
The accuracies observed from these models were as follows:
information gain
we tried
With a 70% training and 30% test , the model achieved an overall accuracy of 70%.
With a 80% training and 20% test ,the model achieved an overall accuracy of 70%.
The 90% training and 10% test the model achieved an overall accuracy of 68%.
gain ratio
we tried
With a (3 folds) the model achieved an overall accuracy of 73%
With a(5 folds) the model achieved an overall accuracy of 72%
gini index
With a 80% training and 20% test , the model achieved an overall accuracy of 72.277%
With a 90% training and 10% test ,the model achieved an overall accuracy of 68.62745%
With a 75% training and 25% test test the model achieved an overall accuracy of 67.54967%
The model that performed the best was the one with the 80% training and 20% test , indicating that it had the highest rate of correctly classified instances.
the model will correctly predict the star rating of a hotel based on these amenities.
The root node of the tree starts with the “Spa” attribute,
When “Spa” is YES, the tree further splits based on the “Gym”
if the “Gym” is YES the tree further splits based on the “Pool”
if the “Gym” is No it will predict 4.5 stars
if the “Pool” is YES it will predict 3 stars
if the “Pool” is NO the tree further splits based on the “Casino”
if the “Casino” is NO it will predict 3.5 stars
if the “Casino” is YES the tree further splits based on the “Tennis.court”
if the “Tennis.court” is NO it will predict 3.5 stars
if the “Tennis.court” is YES it will predict 3 stars
On other side if the “Spa” is NO the tree further splits based on the “Free.internet”
if the “Free.internet” is YES it will predict 4 stars
if the “Free.internet” is NO the tree further splits based on the “Tennis.court”
if the “Tennis.court” is NO it will predict 5 stars
if the “Tennis.court” is YES it will predict 4 stars
For the clustering we used K-means algorithm with 3 different K to find the optimal number
of clusters we took k=4, k=6, k=2
we calculated the average silhouette width for each K
the results is
Number (K)= 4, the average silhouette width=0.7
Number (K)= 2, the average silhouette width=0.6
Number (K)= 6, the average silhouette width=0.9
The model that has the optimal number of clusters is 6-Mean since it has the best average silhouette width which means that objects within the same cluster are close to each other and as far as possible to the objects in the other cluster
8. References:
OpenAI, “Chat,” [Online]. Available: https://chat.openai.com/.
[Author(s)], “Labs slides,” [Online]. Available: [https://lms.ksu.edu.sa/].
K. J. Mazidi, “RPubs,” [Online]. Available: [https://rpubs.com/kjmazidi/195428.]
C. Guild, “RPubs,” [Online]. Available: [https://rpubs.com/camguild/803096.]